"Preise & Zeit" entfernt -- Inhalte in die Leistungen uebernommen
"leistungen und preis&zeit ist ja das gleiche, nimm die kategorie
preise&zeit komplett weg"
Stimmt bei den Paketen und Preisen: Beide Seiten zeigten dieselben
Zahlen. Zwei Orte fuer dieselbe Zahl sind eine Einladung, dass sie
irgendwann auseinanderlaufen -- und dann steht ein falscher Preis auf
der Seite, ohne dass es jemand merkt.
NICHT ALLES WAR DOPPELT
Vor dem Loeschen nachgesehen statt einfach geloescht. Zwei Abschnitte
gab es NUR dort:
"Was den Preis bewegt" -- beantwortet die Frage, die nach jeder
Preisliste kommt: Warum kostet es bei mir mehr oder weniger?
Ohne sie ist eine Preisspanne eine Behauptung.
"Wie bezahlt wird" -- Angebot, 30 % Anzahlung, Restbetrag, Betreuung.
Rechtlich relevant und aus den AGB verlinkt.
Beide sind in die Leistungen umgezogen, samt ihrer 24 Textbausteine in
allen fuenf Sprachen. Waeren sie mitgeloescht worden, haette es niemand
sofort bemerkt -- und die Seite haette ab dann Preise genannt, ohne sie
zu erklaeren.
WEITERLEITUNG STATT 404
Die Adresse /webdesign/preise.html bleibt bedient und fuehrt auf die
Leistungen. Lesezeichen, alte Links aus Nachrichten und die installierte
App zeigen sonst ins Leere, und ein 404 auf einer Preisseite ist der
denkbar schlechteste erste Eindruck.
302 statt 301: Eine dauerhafte Weiterleitung merken sich Browser
hartnaeckig; sollte die Seite je zurueckkehren, muesste jeder Besucher
seinen Zwischenspeicher leeren.
EIN FEHLER BEIM EINBAU
Die Weiterleitung stand zuerst weiter unten in der Schranke, bei den
ohne Code erreichbaren Seiten. Dort haette sie nur fuer NICHT angemeldete
Besucher gegriffen -- wer angemeldet ist, passiert die Schranke vorher
mit next() und haette einen 404 auf die geloeschte Datei bekommen.
Genau die Person also, die die Seite am ehesten im Lesezeichen hat.
Jetzt steht sie ganz vorne, vor jeder Zugangspruefung.
GEPRUEFT: 10 Pruefungen -- beide uebernommenen Abschnitte erscheinen in
allen fuenf Sprachen, kein unuebersetzter Schluessel sichtbar. Kein
Verweis auf die alte Seite blieb irgendwo stehen (ablauf.html hatte
einen, der ist umgebogen). Gestaltung 0 Befunde, Textkodierung sauber,
Designsystem 5.
Versionsstempel und Cache auf v20.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -210,4 +210,82 @@ window.I18N_WD = {
|
||||
fr: "Décris simplement ton projet. Si une formule plus petite suffit, je le dirai — même si cela signifie moins de chiffre d'affaires.",
|
||||
pt: "Descreve simplesmente o teu projeto. Se um pacote menor chegar, eu digo-o — mesmo que isso signifique menos faturação.",
|
||||
},
|
||||
|
||||
/* ---------- Uebernommen von der frueheren Seite "Preise & Zeit" ----------
|
||||
Die Seite wurde am 23.08.2026 entfernt, weil sie dieselben Pakete und
|
||||
Preise zeigte wie die Leistungen. Diese Texte gehoerten aber zu den
|
||||
beiden Abschnitten, die es dort ZUSAETZLICH gab und die hierher
|
||||
umgezogen sind -- ohne sie waeren die Abschnitte einsprachig. */
|
||||
pr_hoch_1: { de: "Viele Unterseiten oder viele Produkte", "de-CH": "Viili Undersite oder viili Produkt", en: "Many sub-pages or many products", fr: "Beaucoup de sous-pages ou de produits", pt: "Muitas subpáginas ou muitos produtos" },
|
||||
pr_hoch_2: { de: "Zusätzliche Sprachen", "de-CH": "Zuesätzlichi Sprooche", en: "Additional languages", fr: "Langues supplémentaires", pt: "Idiomas adicionais" },
|
||||
pr_hoch_3: { de: "Texte und Bilder müssen erst erstellt werden", "de-CH": "Täxt und Bilder mönd zerscht gmacht wärde", en: "Texts and images still have to be created", fr: "Les textes et images doivent encore être créés", pt: "Textos e imagens ainda têm de ser criados" },
|
||||
pr_hoch_4: { de: "Anbindung an fremde Systeme (Kasse, Kalender, Warenwirtschaft)", "de-CH": "Aabindig a frömdi Syschtem (Kasse, Kaländer, Warewirtschaft)", en: "Connections to third-party systems (checkout, calendar, inventory)", fr: "Connexions à des systèmes tiers (caisse, agenda, gestion des stocks)", pt: "Ligações a sistemas externos (caixa, calendário, gestão de stock)" },
|
||||
pr_hoch_5: { de: "Mehr Feedbackrunden als vereinbart", "de-CH": "Meh Feedbackrunde als vereinbart", en: "More feedback rounds than agreed", fr: "Plus de tours de retours que convenu", pt: "Mais rondas de feedback do que o acordado" },
|
||||
pr_hoch_h3: { de: "Macht es teurer und länger", "de-CH": "Macht s tüürer und länger", en: "Makes it more expensive and longer", fr: "Rend le projet plus cher et plus long", pt: "Torna mais caro e mais demorado" },
|
||||
pr_keine_zusage_text: {
|
||||
de: "Die Angaben auf dieser Seite sind Richtwerte, kein Vertrag. Auch das Anfrageformular erzeugt keine verbindliche Zusage. Der Endpreis entsteht ausschließlich durch ein schriftliches Angebot nach Prüfung des tatsächlichen Umfangs.",
|
||||
"de-CH": "D Aagabe uf dere Site sind Richtwärt, kein Vertrag. Au s Aafrogformular macht kei verbindlichi Zuesag. Dr Ändpriis entstoht uusschliesslich dur es schriftlichs Aagebot nach Prüefig vom tatsächliche Umfang.",
|
||||
en: "The figures on this page are guide values, not a contract. The enquiry form does not create a binding commitment either. The final price arises exclusively from a written quote after the actual scope has been reviewed.",
|
||||
fr: "Les indications de cette page sont des valeurs indicatives, pas un contrat. Le formulaire de demande ne crée pas non plus d'engagement ferme. Le prix final résulte exclusivement d'un devis écrit après examen de l'étendue réelle.",
|
||||
pt: "Os valores nesta página são indicativos, não um contrato. O formulário de pedido também não cria compromisso vinculativo. O preço final resulta exclusivamente de um orçamento escrito após análise do âmbito real.",
|
||||
},
|
||||
pr_keine_zusage_titel: {
|
||||
de: "Keine automatische Preiszusage",
|
||||
"de-CH": "Kei automatischi Priiszuesag",
|
||||
en: "No automatic price commitment",
|
||||
fr: "Aucun engagement de prix automatique",
|
||||
pt: "Sem compromisso automático de preço",
|
||||
},
|
||||
pr_runter_1: { de: "Texte, Logo und Bilder liegen fertig vor", "de-CH": "Täxt, Logo und Bilder sind fertig do", en: "Texts, logo and images are ready", fr: "Textes, logo et images sont prêts", pt: "Textos, logótipo e imagens já prontos" },
|
||||
pr_runter_2: { de: "Klare Vorstellung vom Ziel der Seite", "de-CH": "Klari Vorstellig vom Ziel vo dr Site", en: "A clear idea of what the site should achieve", fr: "Une idée claire de l'objectif du site", pt: "Uma ideia clara do objetivo do site" },
|
||||
pr_runter_3: { de: "Eine Person entscheidet, nicht ein Gremium", "de-CH": "Ei Person entscheidet, nöd es Gremium", en: "One person decides, not a committee", fr: "Une personne décide, pas un comité", pt: "Uma pessoa decide, não um comité" },
|
||||
pr_runter_4: { de: "Rückmeldungen gebündelt statt tröpfchenweise", "de-CH": "Rückmäldige bündlet statt tröpfliwiis", en: "Feedback bundled instead of trickling in", fr: "Des retours groupés plutôt qu'au compte-gouttes", pt: "Feedback agrupado em vez de aos poucos" },
|
||||
pr_runter_5: { de: "Bestehende Domain und bestehendes Hosting", "de-CH": "Bestehendi Domain und bestehends Hosting", en: "An existing domain and existing hosting", fr: "Un domaine et un hébergement existants", pt: "Domínio e alojamento já existentes" },
|
||||
pr_runter_h3: { de: "Macht es günstiger und schneller", "de-CH": "Macht s günschtiger und schnäller", en: "Makes it cheaper and faster", fr: "Rend le projet moins cher et plus rapide", pt: "Torna mais barato e mais rápido" },
|
||||
pr_was_h2: {
|
||||
de: "Was den Preis bewegt",
|
||||
"de-CH": "Was dä Priis bewegt",
|
||||
en: "What moves the price",
|
||||
fr: "Ce qui fait bouger le prix",
|
||||
pt: "O que faz mexer o preço",
|
||||
},
|
||||
pr_z1_h3: { de: "1. Angebot", "de-CH": "1. Aagebot", en: "1. Quote", fr: "1. Devis", pt: "1. Orçamento" },
|
||||
pr_z1_p: {
|
||||
de: "Nach dem Briefing bekommst du Preis, Umfang und Zeitrahmen schriftlich. Bis dahin entstehen dir keine Kosten.",
|
||||
"de-CH": "Nach em Briefing überchunnsch Priis, Umfang und Ziitrahme schriftlich. Bis dete entstöhnd dir kei Choschte.",
|
||||
en: "After the briefing you receive price, scope and timeframe in writing. Up to that point you incur no costs.",
|
||||
fr: "Après le briefing, tu reçois le prix, l'étendue et le délai par écrit. Jusque-là, aucun frais pour toi.",
|
||||
pt: "Após o briefing recebes preço, âmbito e prazo por escrito. Até aí não tens custos.",
|
||||
},
|
||||
pr_z2_h3: { de: "2. Anzahlung 30 %", "de-CH": "2. Aazahlig 30 %", en: "2. Deposit 30 %", fr: "2. Acompte 30 %", pt: "2. Sinal 30 %" },
|
||||
pr_z2_p: {
|
||||
de: "Mit der Annahme des Angebots und dem Eingang der Anzahlung wird dein Zeitfenster fest reserviert. Erst dann beginnt die Arbeit.",
|
||||
"de-CH": "Mit dr Aanahm vom Aagebot und em Iigang vo dr Aazahlig wird dis Ziitfenschter fescht reserviert. Erscht denn foht d Arbet a.",
|
||||
en: "Accepting the quote and the arrival of the deposit firmly reserve your time slot. Only then does work begin.",
|
||||
fr: "L'acceptation du devis et la réception de l'acompte réservent fermement ton créneau. Le travail commence seulement ensuite.",
|
||||
pt: "A aceitação do orçamento e a entrada do sinal reservam firmemente a tua janela. Só então começa o trabalho.",
|
||||
},
|
||||
pr_z3_h3: { de: "3. Restbetrag", "de-CH": "3. Rescht", en: "3. Remaining amount", fr: "3. Solde", pt: "3. Valor restante" },
|
||||
pr_z3_p: {
|
||||
de: "Der Rest wird nach deiner Abnahme fällig, vor der Veröffentlichung. Die Nutzungsrechte gehen mit der vollständigen Bezahlung an dich über.",
|
||||
"de-CH": "Dr Rescht wird nach dinere Abnahm fällig, vor dr Veröffentlichig. D Nutzigsrächt göhnd mit dr vollständige Zahlig a dich über.",
|
||||
en: "The remainder is due after your acceptance, before publication. Usage rights transfer to you upon full payment.",
|
||||
fr: "Le solde est dû après ta validation, avant la mise en ligne. Les droits d'utilisation te sont transférés au paiement intégral.",
|
||||
pt: "O restante é devido após a tua aceitação, antes da publicação. Os direitos de utilização passam para ti com o pagamento integral.",
|
||||
},
|
||||
pr_z4_h3: { de: "Betreuung", "de-CH": "Betreuig", en: "Support", fr: "Suivi", pt: "Acompanhamento" },
|
||||
pr_z4_p: {
|
||||
de: "Läuft monatlich und ist jederzeit zum Monatsende kündbar. Keine Mindestlaufzeit, keine automatische Verlängerung um ein ganzes Jahr.",
|
||||
"de-CH": "Lauft monetlich und isch jederziit uf s Monetsänd kündbar. Kei Mindeschtlaufziit, kei automatischi Verlängerig um es ganzes Jahr.",
|
||||
en: "Runs monthly and can be cancelled at any time to the end of the month. No minimum term, no automatic renewal for a whole year.",
|
||||
fr: "Mensuel et résiliable à tout moment pour la fin du mois. Pas de durée minimale, pas de reconduction automatique d'un an.",
|
||||
pt: "É mensal e cancelável a qualquer momento para o fim do mês. Sem prazo mínimo, sem renovação automática por um ano inteiro.",
|
||||
},
|
||||
pr_zahlung_h2: {
|
||||
de: "Wie bezahlt wird",
|
||||
"de-CH": "Wie zahlt wird",
|
||||
en: "How payment works",
|
||||
fr: "Comment se passe le paiement",
|
||||
pt: "Como se paga",
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,140 +0,0 @@
|
||||
/* =====================================================================
|
||||
i18n-wd-preise.js — Preise & Zeit (Masterplan S.8)
|
||||
Die konkreten Beträge und Zeitrahmen stehen NICHT hier, sondern in
|
||||
wd-core.js — siehe dort den Abschnitt "EINZIGE QUELLE DER WAHRHEIT".
|
||||
Hier nur die Texte drumherum.
|
||||
===================================================================== */
|
||||
window.I18N_WD = {
|
||||
seiten_titel: {
|
||||
de: "Preise & Zeit — Dogfather Webdesign",
|
||||
"de-CH": "Priis & Ziit — Dogfather Webdesign",
|
||||
en: "Pricing & time — Dogfather Web Design",
|
||||
fr: "Tarifs & délais — Dogfather Web Design",
|
||||
pt: "Preços & prazos — Dogfather Web Design",
|
||||
},
|
||||
|
||||
pr_eyebrow: { de: "Preise & Zeit", "de-CH": "Priis & Ziit", en: "Pricing & time", fr: "Tarifs & délais", pt: "Preços & prazos" },
|
||||
pr_h1: {
|
||||
de: "Was es kostet und wie lange es dauert",
|
||||
"de-CH": "Was es choschtet und wie lang s duuret",
|
||||
en: "What it costs and how long it takes",
|
||||
fr: "Combien ça coûte et combien de temps ça prend",
|
||||
pt: "Quanto custa e quanto tempo demora",
|
||||
},
|
||||
pr_lead: {
|
||||
de: "Alle Werte sind transparente Einstiegspunkte. Personalisierung, Funktionsumfang, Materialien und zusätzliche Änderungswünsche können Preis und Dauer verändern.",
|
||||
"de-CH": "Alli Wärt sind transparänti Iistiegspünkt. Personalisierig, Funktionsumfang, Material und zuesätzlichi Änderigswünsch chönd Priis und Duur verändere.",
|
||||
en: "All figures are transparent starting points. Personalisation, feature scope, materials and additional change requests can alter price and duration.",
|
||||
fr: "Tous les montants sont des points de départ transparents. La personnalisation, l'étendue des fonctions, les matériaux et les demandes de modification supplémentaires peuvent modifier le prix et la durée.",
|
||||
pt: "Todos os valores são pontos de partida transparentes. Personalização, âmbito de funcionalidades, materiais e pedidos de alteração adicionais podem alterar preço e duração.",
|
||||
},
|
||||
|
||||
pr_tabelle_titel: {
|
||||
de: "Alles auf einen Blick",
|
||||
"de-CH": "Alles uf ei Blick",
|
||||
en: "Everything at a glance",
|
||||
fr: "Tout en un coup d'œil",
|
||||
pt: "Tudo num relance",
|
||||
},
|
||||
pr_sp_paket: { de: "Paket", "de-CH": "Paket", en: "Package", fr: "Formule", pt: "Pacote" },
|
||||
pr_sp_preis: { de: "Einstiegspreis", "de-CH": "Iistiegspriis", en: "Starting price", fr: "Prix de départ", pt: "Preço inicial" },
|
||||
pr_sp_dauer: { de: "Zeitrahmen", "de-CH": "Ziitrahme", en: "Timeframe", fr: "Délai", pt: "Prazo" },
|
||||
pr_sp_fuer: { de: "Gedacht für", "de-CH": "Dänkt für", en: "Intended for", fr: "Destiné à", pt: "Destinado a" },
|
||||
|
||||
pr_kurz_onepager: { de: "Eine Person, ein Angebot, eine Aktion", "de-CH": "Ei Person, es Aagebot, ei Aktion", en: "One person, one offer, one campaign", fr: "Une personne, une offre, une action", pt: "Uma pessoa, uma oferta, uma ação" },
|
||||
pr_kurz_website: { de: "Firmen, Teams, mehrere Themen", "de-CH": "Firme, Teams, mehreri Thema", en: "Companies, teams, several topics", fr: "Entreprises, équipes, plusieurs thèmes", pt: "Empresas, equipas, vários temas" },
|
||||
pr_kurz_shop: { de: "Wer wirklich online verkauft", "de-CH": "Wär würklich online verchauft", en: "Anyone genuinely selling online", fr: "Ceux qui vendent vraiment en ligne", pt: "Quem vende mesmo online" },
|
||||
pr_kurz_verwaltung: { de: "Belege und Zahlen organisieren", "de-CH": "Bäläg und Zahle organisiere", en: "Organising receipts and figures", fr: "Organiser justificatifs et chiffres", pt: "Organizar comprovativos e números" },
|
||||
pr_kurz_betreuung: { de: "Nach der Übergabe weiterlaufen lassen", "de-CH": "Nach dr Übergab wiiterlaufe lo", en: "Keeping things running after handover", fr: "Faire vivre le site après la remise", pt: "Manter tudo a funcionar após a entrega" },
|
||||
|
||||
pr_was_h2: {
|
||||
de: "Was den Preis bewegt",
|
||||
"de-CH": "Was dä Priis bewegt",
|
||||
en: "What moves the price",
|
||||
fr: "Ce qui fait bouger le prix",
|
||||
pt: "O que faz mexer o preço",
|
||||
},
|
||||
pr_hoch_h3: { de: "Macht es teurer und länger", "de-CH": "Macht s tüürer und länger", en: "Makes it more expensive and longer", fr: "Rend le projet plus cher et plus long", pt: "Torna mais caro e mais demorado" },
|
||||
pr_hoch_1: { de: "Viele Unterseiten oder viele Produkte", "de-CH": "Viili Undersite oder viili Produkt", en: "Many sub-pages or many products", fr: "Beaucoup de sous-pages ou de produits", pt: "Muitas subpáginas ou muitos produtos" },
|
||||
pr_hoch_2: { de: "Zusätzliche Sprachen", "de-CH": "Zuesätzlichi Sprooche", en: "Additional languages", fr: "Langues supplémentaires", pt: "Idiomas adicionais" },
|
||||
pr_hoch_3: { de: "Texte und Bilder müssen erst erstellt werden", "de-CH": "Täxt und Bilder mönd zerscht gmacht wärde", en: "Texts and images still have to be created", fr: "Les textes et images doivent encore être créés", pt: "Textos e imagens ainda têm de ser criados" },
|
||||
pr_hoch_4: { de: "Anbindung an fremde Systeme (Kasse, Kalender, Warenwirtschaft)", "de-CH": "Aabindig a frömdi Syschtem (Kasse, Kaländer, Warewirtschaft)", en: "Connections to third-party systems (checkout, calendar, inventory)", fr: "Connexions à des systèmes tiers (caisse, agenda, gestion des stocks)", pt: "Ligações a sistemas externos (caixa, calendário, gestão de stock)" },
|
||||
pr_hoch_5: { de: "Mehr Feedbackrunden als vereinbart", "de-CH": "Meh Feedbackrunde als vereinbart", en: "More feedback rounds than agreed", fr: "Plus de tours de retours que convenu", pt: "Mais rondas de feedback do que o acordado" },
|
||||
|
||||
pr_runter_h3: { de: "Macht es günstiger und schneller", "de-CH": "Macht s günschtiger und schnäller", en: "Makes it cheaper and faster", fr: "Rend le projet moins cher et plus rapide", pt: "Torna mais barato e mais rápido" },
|
||||
pr_runter_1: { de: "Texte, Logo und Bilder liegen fertig vor", "de-CH": "Täxt, Logo und Bilder sind fertig do", en: "Texts, logo and images are ready", fr: "Textes, logo et images sont prêts", pt: "Textos, logótipo e imagens já prontos" },
|
||||
pr_runter_2: { de: "Klare Vorstellung vom Ziel der Seite", "de-CH": "Klari Vorstellig vom Ziel vo dr Site", en: "A clear idea of what the site should achieve", fr: "Une idée claire de l'objectif du site", pt: "Uma ideia clara do objetivo do site" },
|
||||
pr_runter_3: { de: "Eine Person entscheidet, nicht ein Gremium", "de-CH": "Ei Person entscheidet, nöd es Gremium", en: "One person decides, not a committee", fr: "Une personne décide, pas un comité", pt: "Uma pessoa decide, não um comité" },
|
||||
pr_runter_4: { de: "Rückmeldungen gebündelt statt tröpfchenweise", "de-CH": "Rückmäldige bündlet statt tröpfliwiis", en: "Feedback bundled instead of trickling in", fr: "Des retours groupés plutôt qu'au compte-gouttes", pt: "Feedback agrupado em vez de aos poucos" },
|
||||
pr_runter_5: { de: "Bestehende Domain und bestehendes Hosting", "de-CH": "Bestehendi Domain und bestehends Hosting", en: "An existing domain and existing hosting", fr: "Un domaine et un hébergement existants", pt: "Domínio e alojamento já existentes" },
|
||||
|
||||
pr_zahlung_h2: {
|
||||
de: "Wie bezahlt wird",
|
||||
"de-CH": "Wie zahlt wird",
|
||||
en: "How payment works",
|
||||
fr: "Comment se passe le paiement",
|
||||
pt: "Como se paga",
|
||||
},
|
||||
pr_z1_h3: { de: "1. Angebot", "de-CH": "1. Aagebot", en: "1. Quote", fr: "1. Devis", pt: "1. Orçamento" },
|
||||
pr_z1_p: {
|
||||
de: "Nach dem Briefing bekommst du Preis, Umfang und Zeitrahmen schriftlich. Bis dahin entstehen dir keine Kosten.",
|
||||
"de-CH": "Nach em Briefing überchunnsch Priis, Umfang und Ziitrahme schriftlich. Bis dete entstöhnd dir kei Choschte.",
|
||||
en: "After the briefing you receive price, scope and timeframe in writing. Up to that point you incur no costs.",
|
||||
fr: "Après le briefing, tu reçois le prix, l'étendue et le délai par écrit. Jusque-là, aucun frais pour toi.",
|
||||
pt: "Após o briefing recebes preço, âmbito e prazo por escrito. Até aí não tens custos.",
|
||||
},
|
||||
pr_z2_h3: { de: "2. Anzahlung 30 %", "de-CH": "2. Aazahlig 30 %", en: "2. Deposit 30 %", fr: "2. Acompte 30 %", pt: "2. Sinal 30 %" },
|
||||
pr_z2_p: {
|
||||
de: "Mit der Annahme des Angebots und dem Eingang der Anzahlung wird dein Zeitfenster fest reserviert. Erst dann beginnt die Arbeit.",
|
||||
"de-CH": "Mit dr Aanahm vom Aagebot und em Iigang vo dr Aazahlig wird dis Ziitfenschter fescht reserviert. Erscht denn foht d Arbet a.",
|
||||
en: "Accepting the quote and the arrival of the deposit firmly reserve your time slot. Only then does work begin.",
|
||||
fr: "L'acceptation du devis et la réception de l'acompte réservent fermement ton créneau. Le travail commence seulement ensuite.",
|
||||
pt: "A aceitação do orçamento e a entrada do sinal reservam firmemente a tua janela. Só então começa o trabalho.",
|
||||
},
|
||||
pr_z3_h3: { de: "3. Restbetrag", "de-CH": "3. Rescht", en: "3. Remaining amount", fr: "3. Solde", pt: "3. Valor restante" },
|
||||
pr_z3_p: {
|
||||
de: "Der Rest wird nach deiner Abnahme fällig, vor der Veröffentlichung. Die Nutzungsrechte gehen mit der vollständigen Bezahlung an dich über.",
|
||||
"de-CH": "Dr Rescht wird nach dinere Abnahm fällig, vor dr Veröffentlichig. D Nutzigsrächt göhnd mit dr vollständige Zahlig a dich über.",
|
||||
en: "The remainder is due after your acceptance, before publication. Usage rights transfer to you upon full payment.",
|
||||
fr: "Le solde est dû après ta validation, avant la mise en ligne. Les droits d'utilisation te sont transférés au paiement intégral.",
|
||||
pt: "O restante é devido após a tua aceitação, antes da publicação. Os direitos de utilização passam para ti com o pagamento integral.",
|
||||
},
|
||||
pr_z4_h3: { de: "Betreuung", "de-CH": "Betreuig", en: "Support", fr: "Suivi", pt: "Acompanhamento" },
|
||||
pr_z4_p: {
|
||||
de: "Läuft monatlich und ist jederzeit zum Monatsende kündbar. Keine Mindestlaufzeit, keine automatische Verlängerung um ein ganzes Jahr.",
|
||||
"de-CH": "Lauft monetlich und isch jederziit uf s Monetsänd kündbar. Kei Mindeschtlaufziit, kei automatischi Verlängerig um es ganzes Jahr.",
|
||||
en: "Runs monthly and can be cancelled at any time to the end of the month. No minimum term, no automatic renewal for a whole year.",
|
||||
fr: "Mensuel et résiliable à tout moment pour la fin du mois. Pas de durée minimale, pas de reconduction automatique d'un an.",
|
||||
pt: "É mensal e cancelável a qualquer momento para o fim do mês. Sem prazo mínimo, sem renovação automática por um ano inteiro.",
|
||||
},
|
||||
|
||||
pr_keine_zusage_titel: {
|
||||
de: "Keine automatische Preiszusage",
|
||||
"de-CH": "Kei automatischi Priiszuesag",
|
||||
en: "No automatic price commitment",
|
||||
fr: "Aucun engagement de prix automatique",
|
||||
pt: "Sem compromisso automático de preço",
|
||||
},
|
||||
pr_keine_zusage_text: {
|
||||
de: "Die Angaben auf dieser Seite sind Richtwerte, kein Vertrag. Auch das Anfrageformular erzeugt keine verbindliche Zusage. Der Endpreis entsteht ausschließlich durch ein schriftliches Angebot nach Prüfung des tatsächlichen Umfangs.",
|
||||
"de-CH": "D Aagabe uf dere Site sind Richtwärt, kein Vertrag. Au s Aafrogformular macht kei verbindlichi Zuesag. Dr Ändpriis entstoht uusschliesslich dur es schriftlichs Aagebot nach Prüefig vom tatsächliche Umfang.",
|
||||
en: "The figures on this page are guide values, not a contract. The enquiry form does not create a binding commitment either. The final price arises exclusively from a written quote after the actual scope has been reviewed.",
|
||||
fr: "Les indications de cette page sont des valeurs indicatives, pas un contrat. Le formulaire de demande ne crée pas non plus d'engagement ferme. Le prix final résulte exclusivement d'un devis écrit après examen de l'étendue réelle.",
|
||||
pt: "Os valores nesta página são indicativos, não um contrato. O formulário de pedido também não cria compromisso vinculativo. O preço final resulta exclusivamente de um orçamento escrito após análise do âmbito real.",
|
||||
},
|
||||
|
||||
pr_cta_h2: {
|
||||
de: "Passt das zu deinem Budget?",
|
||||
"de-CH": "Passt das zu dim Budget?",
|
||||
en: "Does that fit your budget?",
|
||||
fr: "Est-ce compatible avec ton budget ?",
|
||||
pt: "Isto encaixa no teu orçamento?",
|
||||
},
|
||||
pr_cta_p: {
|
||||
de: "Sag im Formular einfach, welcher Rahmen realistisch ist. Wenn es nicht passt, sage ich das offen — statt ein Angebot zu schreiben, das nachher niemand bezahlen will.",
|
||||
"de-CH": "Säg im Formular eifach, wele Rahme realistisch isch. Wenn s nöd passt, säg i das offe — statt es Aagebot z schriibe, wo nachher niemert zahle will.",
|
||||
en: "Just state in the form what range is realistic. If it doesn't fit, I'll say so openly — instead of writing a quote nobody wants to pay afterwards.",
|
||||
fr: "Indique simplement dans le formulaire la fourchette réaliste. Si cela ne convient pas, je le dirai franchement — plutôt que d'écrire un devis que personne ne voudra payer.",
|
||||
pt: "Diz simplesmente no formulário que intervalo é realista. Se não encaixar, digo-o abertamente — em vez de escrever um orçamento que depois ninguém quer pagar.",
|
||||
},
|
||||
};
|
||||
@@ -335,7 +335,6 @@
|
||||
var NAV = [
|
||||
{ key: "nav_start", href: "/webdesign/" },
|
||||
{ key: "nav_leistungen", href: "/webdesign/leistungen.html" },
|
||||
{ key: "nav_preise", href: "/webdesign/preise.html" },
|
||||
{ key: "nav_portfolio", href: "/webdesign/portfolio.html" },
|
||||
{ key: "nav_ablauf", href: "/webdesign/ablauf.html" },
|
||||
{ key: "nav_ueber", href: "/webdesign/ueber.html" },
|
||||
|
||||
@@ -300,6 +300,33 @@ export function webdesignGate(req, res, next) {
|
||||
// Alles außerhalb von /webdesign geht diese Schranke nichts an.
|
||||
if (pfad !== WD_PRAEFIX && !pfad.startsWith(WD_PRAEFIX + "/")) return next();
|
||||
|
||||
/* WEITERLEITUNG DER ENTFERNTEN PREISSEITE (23.08.2026)
|
||||
|
||||
"Preise & Zeit" zeigte dieselben Pakete und Preise wie die
|
||||
Leistungen. Zwei Orte fuer dieselbe Zahl sind eine Einladung, dass
|
||||
sie irgendwann auseinanderlaufen -- und dann steht ein falscher
|
||||
Preis auf der Seite, ohne dass es jemand merkt.
|
||||
|
||||
Die Seite ist weg, aber die Adresse bleibt bedient. Lesezeichen,
|
||||
alte Links aus Nachrichten und die installierte App zeigen sonst
|
||||
ins Leere, und ein 404 auf einer Preisseite ist der denkbar
|
||||
schlechteste erste Eindruck.
|
||||
|
||||
302 statt 301: Eine dauerhafte Weiterleitung merken sich Browser
|
||||
hartnaeckig. Sollte die Seite je zurueckkehren, muesste jeder
|
||||
Besucher seinen Zwischenspeicher leeren. Suchmaschinen spielt das
|
||||
ohnehin keine Rolle -- der Bereich ist nicht oeffentlich.
|
||||
|
||||
⚠️ Diese Pruefung steht GANZ VORNE, noch vor der Zugangspruefung.
|
||||
Weiter unten (bei den ohne Code erreichbaren Seiten) waere sie nur
|
||||
fuer NICHT angemeldete Besucher gelaufen -- wer angemeldet ist,
|
||||
passiert die Schranke vorher mit next() und bekaeme einen 404 auf
|
||||
die geloeschte Datei. Beim ersten Einbau stand sie genau dort. */
|
||||
if (pfad === "/webdesign/preise.html") {
|
||||
return res.redirect(302, "/webdesign/leistungen.html");
|
||||
}
|
||||
|
||||
|
||||
/* Noindex für den GESAMTEN Bereich, unabhängig vom Anmeldezustand
|
||||
(Masterplan S.14: "Noindex, Zugriffsschutz und interne Linksperre
|
||||
bleiben aktiv, bis Dogfather den Launch ausdrücklich bestätigt").
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd20" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd20" />
|
||||
<style>
|
||||
/* Zeitstrahl: die Linie verbindet die Nummernkreise. Sie liegt hinter
|
||||
den Kreisen (z-index) und endet beim letzten Schritt, damit sie nicht
|
||||
@@ -174,7 +174,7 @@
|
||||
<p class="wd-lead wd-auf" data-i18n="ab_dauer_p">Die Zeitrahmen auf der Preisseite gelten ab dem Eingang der Anzahlung — nicht ab der ersten Nachricht. Der häufigste Grund für Verzögerungen ist nicht die Technik, sondern dass Texte oder Bilder noch fehlen. Deshalb wird im Formular gleich danach gefragt.</p>
|
||||
<div class="wd-btn-reihe">
|
||||
<a class="wd-btn wd-btn--haupt" href="/webdesign/anfrage.html" data-i18n="nav_anfrage">Projekt anfragen</a>
|
||||
<a class="wd-btn wd-btn--zweit" href="/webdesign/preise.html" data-i18n="ab_zu_preise">Zu den Zeitrahmen</a>
|
||||
<a class="wd-btn wd-btn--zweit" href="/webdesign/leistungen.html" data-i18n="ab_zu_preise">Zu den Zeitrahmen</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -183,7 +183,7 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-ablauf.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/i18n-wd-ablauf.js?v=20260823wd20"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd20"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd20" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd20" />
|
||||
<style>
|
||||
/* ---------- Schrittanzeige ----------
|
||||
Zeigt alle vier Schritte gleichzeitig statt nur "3 von 4". Man sieht
|
||||
@@ -418,8 +418,8 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-anfrage.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-anfrage.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/i18n-wd-anfrage.js?v=20260823wd20"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd20"></script>
|
||||
<script src="/assets/js/wd-anfrage.js?v=20260823wd20"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+4
-4
@@ -13,8 +13,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd20" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd20" />
|
||||
<style>
|
||||
.fq-thema { scroll-margin-top: 90px; }
|
||||
.fq-thema + .fq-thema { margin-top: clamp(2rem, 4vw, 3rem); }
|
||||
@@ -195,7 +195,7 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-faq.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/i18n-wd-faq.js?v=20260823wd20"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd20"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd20" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd20" />
|
||||
<style>
|
||||
/* ---------- Nur auf der Startseite gebraucht ---------- */
|
||||
|
||||
@@ -407,8 +407,8 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-index.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/i18n-wd-index.js?v=20260823wd20"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd20"></script>
|
||||
<script>
|
||||
/* ---------------------------------------------------------------------
|
||||
Marken-Intro (Masterplan S.3, Schritt 02: "Nach erfolgreichem Code
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd20" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd20" />
|
||||
<style>
|
||||
/* Sprungmarken.
|
||||
Frueher eine waagerecht wischbare Leiste. Rueckmeldung 22.08.2026:
|
||||
@@ -317,6 +317,86 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ================================================================
|
||||
Uebernommen von der frueheren Seite "Preise & Zeit" (23.08.2026).
|
||||
|
||||
Die Seite wurde entfernt, weil sie dieselben Pakete und Preise
|
||||
zeigte wie diese hier -- zwei Orte fuer dieselbe Zahl sind eine
|
||||
Einladung, dass sie irgendwann auseinanderlaufen.
|
||||
|
||||
Diese beiden Abschnitte gab es dort aber ZUSAETZLICH, und sie
|
||||
waeren beim blossen Loeschen verlorengegangen:
|
||||
|
||||
"Was den Preis bewegt" -- beantwortet die Frage, die nach jeder
|
||||
Preisliste kommt, und macht den Preis nachvollziehbar
|
||||
"Wie bezahlt wird" -- die 30-%-Anzahlung. Rechtlich
|
||||
relevant und aus den AGB und den Fragen verlinkt
|
||||
================================================================ -->
|
||||
<section class="wd-abschnitt wd-abschnitt--gehoben">
|
||||
<div class="wd-container">
|
||||
<h2 class="wd-auf" data-i18n="pr_was_h2">Was den Preis bewegt</h2>
|
||||
<div class="wd-grid wd-grid--2" style="margin-top:1.8rem">
|
||||
<div class="wd-karte wd-karte--lila wd-karte--kappe wd-auf">
|
||||
<h3 data-i18n="pr_hoch_h3">Macht es teurer und länger</h3>
|
||||
<ul class="wd-liste">
|
||||
<li data-i18n="pr_hoch_1">Viele Unterseiten oder viele Produkte</li>
|
||||
<li data-i18n="pr_hoch_2">Zusätzliche Sprachen</li>
|
||||
<li data-i18n="pr_hoch_3">Texte und Bilder müssen erst erstellt werden</li>
|
||||
<li data-i18n="pr_hoch_4">Anbindung an fremde Systeme (Kasse, Kalender, Warenwirtschaft)</li>
|
||||
<li data-i18n="pr_hoch_5">Mehr Feedbackrunden als vereinbart</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="wd-karte wd-karte--kappe wd-auf">
|
||||
<h3 data-i18n="pr_runter_h3">Macht es günstiger und schneller</h3>
|
||||
<ul class="wd-liste">
|
||||
<li data-i18n="pr_runter_1">Texte, Logo und Bilder liegen fertig vor</li>
|
||||
<li data-i18n="pr_runter_2">Klare Vorstellung vom Ziel der Seite</li>
|
||||
<li data-i18n="pr_runter_3">Eine Person entscheidet, nicht ein Gremium</li>
|
||||
<li data-i18n="pr_runter_4">Rückmeldungen gebündelt statt tröpfchenweise</li>
|
||||
<li data-i18n="pr_runter_5">Bestehende Domain und bestehendes Hosting</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ---------------- Zahlung ---------------- -->
|
||||
<section class="wd-abschnitt">
|
||||
<div class="wd-container">
|
||||
<h2 class="wd-auf" data-i18n="pr_zahlung_h2">Wie bezahlt wird</h2>
|
||||
|
||||
<div class="pr-zahlung" style="margin-top:1.8rem">
|
||||
<div class="wd-karte wd-karte--kappe wd-auf">
|
||||
<h3 data-i18n="pr_z1_h3">1. Angebot</h3>
|
||||
<p data-i18n="pr_z1_p">Nach dem Briefing bekommst du Preis, Umfang und Zeitrahmen schriftlich. Bis dahin entstehen dir keine Kosten.</p>
|
||||
</div>
|
||||
<div class="wd-karte wd-karte--kappe wd-auf">
|
||||
<h3 data-i18n="pr_z2_h3">2. Anzahlung 30 %</h3>
|
||||
<p data-i18n="pr_z2_p">Mit der Annahme des Angebots und dem Eingang der Anzahlung wird dein Zeitfenster fest reserviert. Erst dann beginnt die Arbeit.</p>
|
||||
</div>
|
||||
<div class="wd-karte wd-karte--kappe wd-auf">
|
||||
<h3 data-i18n="pr_z3_h3">3. Restbetrag</h3>
|
||||
<p data-i18n="pr_z3_p">Der Rest wird nach deiner Abnahme fällig, vor der Veröffentlichung. Die Nutzungsrechte gehen mit der vollständigen Bezahlung an dich über.</p>
|
||||
</div>
|
||||
<div class="wd-karte wd-karte--lila wd-karte--kappe wd-auf">
|
||||
<h3 data-i18n="pr_z4_h3">Betreuung</h3>
|
||||
<p data-i18n="pr_z4_p">Läuft monatlich und ist jederzeit zum Monatsende kündbar. Keine Mindestlaufzeit, keine automatische Verlängerung um ein ganzes Jahr.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Gold: Zahlungsinformation — genau der vorgesehene Zweck. -->
|
||||
<div class="wd-hinweis wd-auf" style="margin-top:1.5rem">
|
||||
<p class="wd-hinweis-titel" data-i18n="anzahlung_titel">Wichtig: 30 % Anzahlung</p>
|
||||
<p data-i18n="anzahlung_text">Der Projektstart wird nach Annahme des schriftlichen Angebots und Eingang einer Anzahlung von 30 % des vereinbarten Gesamtpreises reserviert.</p>
|
||||
</div>
|
||||
|
||||
<div class="wd-hinweis wd-auf" style="margin-top:1rem">
|
||||
<p class="wd-hinweis-titel" data-i18n="pr_keine_zusage_titel">Keine automatische Preiszusage</p>
|
||||
<p data-i18n="pr_keine_zusage_text">Die Angaben auf dieser Seite sind Richtwerte, kein Vertrag. Auch das Anfrageformular erzeugt keine verbindliche Zusage. Der Endpreis entsteht ausschließlich durch ein schriftliches Angebot nach Prüfung des tatsächlichen Umfangs.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="wd-abschnitt wd-abschnitt--gehoben">
|
||||
<div class="wd-container wd-container--schmal" style="text-align:center">
|
||||
<h2 data-i18n="cta_h2">Nicht sicher, welches Paket passt?</h2>
|
||||
@@ -331,7 +411,7 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-leistungen.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/i18n-wd-leistungen.js?v=20260823wd20"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd20"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd20" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd20" />
|
||||
<style>
|
||||
.po-login { max-width: 440px; margin: clamp(1.5rem,6vh,4rem) auto; }
|
||||
|
||||
@@ -134,8 +134,8 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-portal.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-portal.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/i18n-wd-portal.js?v=20260823wd20"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd20"></script>
|
||||
<script src="/assets/js/wd-portal.js?v=20260823wd20"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd20" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd20" />
|
||||
<style>
|
||||
.pfo-projekt { overflow: hidden; padding: 0; margin-bottom: clamp(1.4rem, 3vw, 2.2rem); }
|
||||
.pfo-bild {
|
||||
@@ -192,7 +192,7 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-portfolio.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/i18n-wd-portfolio.js?v=20260823wd20"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd20"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,202 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de" data-i18n-titel="seiten_titel">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Preise & Zeit — Dogfather Webdesign</title>
|
||||
<meta name="description" content="Einstiegspreise, Zeitrahmen, 30 % Anzahlung und was den Preis nach oben oder unten bewegt — offen aufgeschrieben." />
|
||||
<meta name="robots" content="noindex, nofollow, noarchive" />
|
||||
<link rel="icon" type="image/png" href="/assets/img/favicon.png" />
|
||||
<meta name="theme-color" content="#05070b" />
|
||||
<link rel="manifest" href="/webdesign/app.webmanifest" />
|
||||
<link rel="apple-touch-icon" href="/assets/img/wd-app-180.png" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd19" />
|
||||
<style>
|
||||
.pr-preis-gross { font-family: var(--font-head); font-weight: 800; color: var(--wd-blau); white-space: nowrap; }
|
||||
|
||||
/* Die Übersichtstabelle wird auf dem Handy zu Karten umgebaut, statt
|
||||
waagerecht zu scrollen. Vier Spalten mit langen deutschen Texten sind
|
||||
auf 390px auch mit Scrollbalken nicht lesbar — man verliert beim
|
||||
Wischen sofort den Bezug zur Zeile. Deshalb: jede Zeile wird eine
|
||||
eigene Karte, die Spaltenüberschrift steht per ::before davor. */
|
||||
@media (max-width: 760px) {
|
||||
.pr-tabelle, .pr-tabelle tbody, .pr-tabelle tr, .pr-tabelle td { display: block; width: 100%; }
|
||||
.pr-tabelle { min-width: 0; }
|
||||
.pr-tabelle thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
|
||||
.pr-tabelle tr {
|
||||
border: 1px solid var(--wd-rand); border-radius: var(--wd-r);
|
||||
margin-bottom: .8rem; padding: .3rem .2rem; background: rgb(var(--wd-glas-rgb) / .5);
|
||||
}
|
||||
.pr-tabelle td { border: none; padding: .45rem 1rem; }
|
||||
.pr-tabelle td::before {
|
||||
content: attr(data-titel);
|
||||
display: block; font-size: 0.75rem; letter-spacing: .12em; text-transform: uppercase;
|
||||
font-weight: 800; color: var(--wd-blau); margin-bottom: .1rem;
|
||||
}
|
||||
/* Die erste Zelle ist der Paketname — der braucht keine Beschriftung. */
|
||||
.pr-tabelle td:first-child { padding-top: .8rem; }
|
||||
.pr-tabelle td:first-child::before { display: none; }
|
||||
.pr-tabelle td:first-child strong { font-size: 1.1rem; }
|
||||
.pr-tabelle td:last-child { padding-bottom: .8rem; }
|
||||
}
|
||||
|
||||
.pr-zahlung { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
|
||||
@media (max-width: 980px) { .pr-zahlung { grid-template-columns: repeat(2, 1fr); } }
|
||||
@media (max-width: 560px) { .pr-zahlung { grid-template-columns: 1fr; } }
|
||||
</style>
|
||||
</head>
|
||||
<body class="wd">
|
||||
|
||||
<div id="wd-kopf"></div>
|
||||
|
||||
<main id="wd-inhalt">
|
||||
|
||||
<section class="wd-abschnitt wd-abschnitt--eng" style="padding-top:clamp(2.4rem,6vw,4rem)">
|
||||
<div class="wd-container">
|
||||
<span class="wd-eyebrow" data-i18n="pr_eyebrow">Preise & Zeit</span>
|
||||
<h1 data-i18n="pr_h1">Was es kostet und wie lange es dauert</h1>
|
||||
<p class="wd-lead" style="max-width:72ch" data-i18n="pr_lead">Alle Werte sind transparente Einstiegspunkte. Personalisierung, Funktionsumfang, Materialien und zusätzliche Änderungswünsche können Preis und Dauer verändern.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ---------------- Übersicht ---------------- -->
|
||||
<section class="wd-abschnitt" style="padding-top:0">
|
||||
<div class="wd-container">
|
||||
<h2 class="wd-auf" data-i18n="pr_tabelle_titel">Alles auf einen Blick</h2>
|
||||
<div class="wd-tabelle-rahmen wd-auf" style="margin-top:1.4rem">
|
||||
<table class="wd-tabelle pr-tabelle">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" data-i18n="pr_sp_paket">Paket</th>
|
||||
<th scope="col" data-i18n="pr_sp_preis">Einstiegspreis</th>
|
||||
<th scope="col" data-i18n="pr_sp_dauer">Zeitrahmen</th>
|
||||
<th scope="col" data-i18n="pr_sp_fuer">Gedacht für</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong data-i18n="pk_onepager_h3">Onepager</strong></td>
|
||||
<td data-titel="Einstiegspreis" data-i18n-attr="data-titel:pr_sp_preis"><span class="pr-preis-gross">ab 300 €</span></td>
|
||||
<td data-titel="Zeitrahmen" data-i18n-attr="data-titel:pr_sp_dauer"><span data-i18n="pk_onepager_dauer">ca. 5–10 Arbeitstage</span></td>
|
||||
<td data-titel="Gedacht für" data-i18n-attr="data-titel:pr_sp_fuer"><span data-i18n="pr_kurz_onepager">Eine Person, ein Angebot, eine Aktion</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong data-i18n="pk_website_h3">Professionelle Website</strong></td>
|
||||
<td data-titel="Einstiegspreis" data-i18n-attr="data-titel:pr_sp_preis"><span class="pr-preis-gross">ab 500 €</span></td>
|
||||
<td data-titel="Zeitrahmen" data-i18n-attr="data-titel:pr_sp_dauer"><span data-i18n="pk_website_dauer">ca. 2–4 Wochen</span></td>
|
||||
<td data-titel="Gedacht für" data-i18n-attr="data-titel:pr_sp_fuer"><span data-i18n="pr_kurz_website">Firmen, Teams, mehrere Themen</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong data-i18n="pk_shop_h3">Shop & umfangreiche Website</strong></td>
|
||||
<td data-titel="Einstiegspreis" data-i18n-attr="data-titel:pr_sp_preis"><span class="pr-preis-gross">ab 1.000 €</span></td>
|
||||
<td data-titel="Zeitrahmen" data-i18n-attr="data-titel:pr_sp_dauer"><span data-i18n="pk_shop_dauer">ca. 4–8 Wochen</span></td>
|
||||
<td data-titel="Gedacht für" data-i18n-attr="data-titel:pr_sp_fuer"><span data-i18n="pr_kurz_shop">Wer wirklich online verkauft</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong data-i18n="pk_verwaltung_h3">Buchhaltungs- & Steuerverwaltungsseiten</strong></td>
|
||||
<td data-titel="Einstiegspreis" data-i18n-attr="data-titel:pr_sp_preis"><span class="pr-preis-gross">ab 1.500 €</span></td>
|
||||
<td data-titel="Zeitrahmen" data-i18n-attr="data-titel:pr_sp_dauer"><span data-i18n="pk_verwaltung_dauer">ca. 6–12 Wochen</span></td>
|
||||
<td data-titel="Gedacht für" data-i18n-attr="data-titel:pr_sp_fuer"><span data-i18n="pr_kurz_verwaltung">Belege und Zahlen organisieren</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong data-i18n="betreuung_h3">Laufende Betreuung</strong></td>
|
||||
<td data-titel="Einstiegspreis" data-i18n-attr="data-titel:pr_sp_preis"><span class="pr-preis-gross" data-i18n="betreuung_preis">ab 49 € / Monat</span></td>
|
||||
<td data-titel="Zeitrahmen" data-i18n-attr="data-titel:pr_sp_dauer">—</td>
|
||||
<td data-titel="Gedacht für" data-i18n-attr="data-titel:pr_sp_fuer"><span data-i18n="pr_kurz_betreuung">Nach der Übergabe weiterlaufen lassen</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p class="wd-personalisierung wd-auf" style="margin-top:.9rem" data-i18n="pk_personalisierung">Personalisierung möglich — verändert Preis und Dauer.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ---------------- Was den Preis bewegt ---------------- -->
|
||||
<section class="wd-abschnitt wd-abschnitt--gehoben">
|
||||
<div class="wd-container">
|
||||
<h2 class="wd-auf" data-i18n="pr_was_h2">Was den Preis bewegt</h2>
|
||||
<div class="wd-grid wd-grid--2" style="margin-top:1.8rem">
|
||||
<div class="wd-karte wd-karte--lila wd-karte--kappe wd-auf">
|
||||
<h3 data-i18n="pr_hoch_h3">Macht es teurer und länger</h3>
|
||||
<ul class="wd-liste">
|
||||
<li data-i18n="pr_hoch_1">Viele Unterseiten oder viele Produkte</li>
|
||||
<li data-i18n="pr_hoch_2">Zusätzliche Sprachen</li>
|
||||
<li data-i18n="pr_hoch_3">Texte und Bilder müssen erst erstellt werden</li>
|
||||
<li data-i18n="pr_hoch_4">Anbindung an fremde Systeme (Kasse, Kalender, Warenwirtschaft)</li>
|
||||
<li data-i18n="pr_hoch_5">Mehr Feedbackrunden als vereinbart</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="wd-karte wd-karte--kappe wd-auf">
|
||||
<h3 data-i18n="pr_runter_h3">Macht es günstiger und schneller</h3>
|
||||
<ul class="wd-liste">
|
||||
<li data-i18n="pr_runter_1">Texte, Logo und Bilder liegen fertig vor</li>
|
||||
<li data-i18n="pr_runter_2">Klare Vorstellung vom Ziel der Seite</li>
|
||||
<li data-i18n="pr_runter_3">Eine Person entscheidet, nicht ein Gremium</li>
|
||||
<li data-i18n="pr_runter_4">Rückmeldungen gebündelt statt tröpfchenweise</li>
|
||||
<li data-i18n="pr_runter_5">Bestehende Domain und bestehendes Hosting</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ---------------- Zahlung ---------------- -->
|
||||
<section class="wd-abschnitt">
|
||||
<div class="wd-container">
|
||||
<h2 class="wd-auf" data-i18n="pr_zahlung_h2">Wie bezahlt wird</h2>
|
||||
|
||||
<div class="pr-zahlung" style="margin-top:1.8rem">
|
||||
<div class="wd-karte wd-karte--kappe wd-auf">
|
||||
<h3 data-i18n="pr_z1_h3">1. Angebot</h3>
|
||||
<p data-i18n="pr_z1_p">Nach dem Briefing bekommst du Preis, Umfang und Zeitrahmen schriftlich. Bis dahin entstehen dir keine Kosten.</p>
|
||||
</div>
|
||||
<div class="wd-karte wd-karte--kappe wd-auf">
|
||||
<h3 data-i18n="pr_z2_h3">2. Anzahlung 30 %</h3>
|
||||
<p data-i18n="pr_z2_p">Mit der Annahme des Angebots und dem Eingang der Anzahlung wird dein Zeitfenster fest reserviert. Erst dann beginnt die Arbeit.</p>
|
||||
</div>
|
||||
<div class="wd-karte wd-karte--kappe wd-auf">
|
||||
<h3 data-i18n="pr_z3_h3">3. Restbetrag</h3>
|
||||
<p data-i18n="pr_z3_p">Der Rest wird nach deiner Abnahme fällig, vor der Veröffentlichung. Die Nutzungsrechte gehen mit der vollständigen Bezahlung an dich über.</p>
|
||||
</div>
|
||||
<div class="wd-karte wd-karte--lila wd-karte--kappe wd-auf">
|
||||
<h3 data-i18n="pr_z4_h3">Betreuung</h3>
|
||||
<p data-i18n="pr_z4_p">Läuft monatlich und ist jederzeit zum Monatsende kündbar. Keine Mindestlaufzeit, keine automatische Verlängerung um ein ganzes Jahr.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Gold: Zahlungsinformation — genau der vorgesehene Zweck. -->
|
||||
<div class="wd-hinweis wd-auf" style="margin-top:1.5rem">
|
||||
<p class="wd-hinweis-titel" data-i18n="anzahlung_titel">Wichtig: 30 % Anzahlung</p>
|
||||
<p data-i18n="anzahlung_text">Der Projektstart wird nach Annahme des schriftlichen Angebots und Eingang einer Anzahlung von 30 % des vereinbarten Gesamtpreises reserviert.</p>
|
||||
</div>
|
||||
|
||||
<div class="wd-hinweis wd-auf" style="margin-top:1rem">
|
||||
<p class="wd-hinweis-titel" data-i18n="pr_keine_zusage_titel">Keine automatische Preiszusage</p>
|
||||
<p data-i18n="pr_keine_zusage_text">Die Angaben auf dieser Seite sind Richtwerte, kein Vertrag. Auch das Anfrageformular erzeugt keine verbindliche Zusage. Der Endpreis entsteht ausschließlich durch ein schriftliches Angebot nach Prüfung des tatsächlichen Umfangs.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="wd-abschnitt wd-abschnitt--gehoben">
|
||||
<div class="wd-container wd-container--schmal" style="text-align:center">
|
||||
<h2 data-i18n="pr_cta_h2">Passt das zu deinem Budget?</h2>
|
||||
<p class="wd-lead" data-i18n="pr_cta_p">Sag im Formular einfach, welcher Rahmen realistisch ist. Wenn es nicht passt, sage ich das offen — statt ein Angebot zu schreiben, das nachher niemand bezahlen will.</p>
|
||||
<div class="wd-btn-reihe" style="justify-content:center">
|
||||
<a class="wd-btn wd-btn--haupt" href="/webdesign/anfrage.html" data-i18n="nav_anfrage">Projekt anfragen</a>
|
||||
<a class="wd-btn wd-btn--zweit" href="/webdesign/leistungen.html" data-i18n="nav_leistungen">Leistungen</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-preise.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd19"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -8,8 +8,8 @@
|
||||
<link rel="icon" type="image/png" href="/assets/img/favicon.png" />
|
||||
<link rel="manifest" href="/webdesign/app.webmanifest" />
|
||||
<meta name="theme-color" content="#05070b" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd20" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd20" />
|
||||
</head>
|
||||
<body class="wd">
|
||||
<div id="wd-kopf"></div>
|
||||
@@ -400,6 +400,6 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd20"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
Start alle alten Zwischenspeicher weg. Muss bei jeder Änderung an den
|
||||
Dateien unten hochgezählt werden, sonst hängen Nutzer auf einem alten
|
||||
Stand fest. */
|
||||
const CACHE_NAME = "dogfather-webdesign-v19";
|
||||
const CACHE_NAME = "dogfather-webdesign-v20";
|
||||
|
||||
/* Bausteine, die die Oberfläche zum Anzeigen braucht. Bewusst KEINE
|
||||
HTML-Datei in dieser Liste. */
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd20" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd20" />
|
||||
<style>
|
||||
.ue-kopf { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: clamp(1.5rem, 4vw, 3rem); align-items: center; }
|
||||
/* Auf dem Handy zuerst der Text, dann das Bild: sonst schiebt ein
|
||||
@@ -127,7 +127,7 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-ueber.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/i18n-wd-ueber.js?v=20260823wd20"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd20"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
<link rel="apple-touch-icon" href="/assets/img/wd-app-180.png" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-title" content="DF Verwaltung" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd20" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd20" />
|
||||
<style>
|
||||
/* =====================================================================
|
||||
Verwaltungsbereich — bewusst NUR AUF DEUTSCH.
|
||||
@@ -761,7 +761,7 @@
|
||||
<div class="vw-detail-blatt" id="vw-detail-blatt"></div>
|
||||
</div>
|
||||
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd20"></script>
|
||||
<script>
|
||||
/* =====================================================================
|
||||
Verwaltung: Anfragen ansehen, Status ändern, Notizen, Archivieren.
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
<link rel="icon" type="image/png" href="/assets/img/favicon.png" />
|
||||
<link rel="manifest" href="/webdesign/app.webmanifest" />
|
||||
<meta name="theme-color" content="#05070b" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd20" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd20" />
|
||||
</head>
|
||||
<body class="wd">
|
||||
<div id="wd-kopf"></div>
|
||||
@@ -137,8 +137,8 @@
|
||||
|
||||
<div id="wd-fuss"></div>
|
||||
|
||||
<script src="/assets/js/i18n-wd-widerruf.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-widerruf.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/i18n-wd-widerruf.js?v=20260823wd20"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd20"></script>
|
||||
<script src="/assets/js/wd-widerruf.js?v=20260823wd20"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Dogfather Webdesign" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd19" />
|
||||
<link rel="stylesheet" href="/assets/css/main.css?v=20260823wd20" />
|
||||
<link rel="stylesheet" href="/assets/css/webdesign.css?v=20260823wd20" />
|
||||
<style>
|
||||
/* =====================================================================
|
||||
Zugangswand — nur hier gebraucht, deshalb bewusst NICHT in
|
||||
@@ -177,8 +177,8 @@
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script src="/assets/js/i18n-wd-zugang.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd19"></script>
|
||||
<script src="/assets/js/i18n-wd-zugang.js?v=20260823wd20"></script>
|
||||
<script src="/assets/js/wd-core.js?v=20260823wd20"></script>
|
||||
<script>
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
Reference in New Issue
Block a user