@@ -0,0 +1,462 @@ | |||
<!doctype html> | |||
<html> | |||
<head> | |||
<meta charset="utf-8"> | |||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> | |||
<title>DSGVO - Alles Schall und Rauch?</title> | |||
<link rel="stylesheet" href="reveal.js/css/reveal.css"> | |||
<link rel="stylesheet" href="reveal.js/css/theme/black.css"> | |||
<!-- Theme used for syntax highlighting of code --> | |||
<link rel="stylesheet" href="reveal.js/lib/css/zenburn.css"> | |||
<!-- Printing and PDF exports --> | |||
<script> | |||
var link = document.createElement( 'link' ); | |||
link.rel = 'stylesheet'; | |||
link.type = 'text/css'; | |||
link.href = window.location.search.match( /print-pdf/gi ) ? 'reveal.js/css/print/pdf.css' : 'revealjs/css/print/paper.css'; | |||
document.getElementsByTagName( 'head' )[0].appendChild( link ); | |||
</script> | |||
</head> | |||
<body> | |||
<div class="reveal"> | |||
<div class="slides"> | |||
<section><h2>DSGVO - Alles Schall und Rauch?</h2> | |||
<img class="fragment" src="imgs/dsgvo_alles_schall_und_rauch/stargate_command.png"> | |||
</section> | |||
<section><h3>Speaker</h3> | |||
<p><span class="fragment">Name:<span> <span class="fragment">Simon<span> <span class="fragment current-visible">Lackerbauer<span><span class="fragment" /></p> | |||
<p class="fragment">Mehr ist mir nicht erlaubt zu sagen, und mehr ist euch nicht erlaubt zu wissen.</p> | |||
</section> | |||
<section><h3>Speaker</h3> | |||
<p>Simon Lackerbauer | |||
<small> | |||
<ul> | |||
<li>Operations Engineer by trade, jurist when nobody's looking</li> | |||
<li>Datenschutzbeauftragter Mayflower GmbH seit 2012</li> | |||
<li>Slides und Sonstiges: <a href="https://github.com/ciil">github.com/ciil</a></li> | |||
</ul> | |||
</small> | |||
</p> | |||
</section> | |||
<section> | |||
<section><h3>Rechtliche Grundlagen</h3> | |||
</section> | |||
<section><h3>Systematische Einordnung</h3> | |||
<ul> | |||
<li>frรผher: BDSG (deutsches Bundesgesetz)</li> | |||
<li>seit 25.05.2018: Datenschutz-Grundverordnung (DSGVO/GDPR) und BDSG-neu via DSAnpUG-EU<br> | |||
<small>voller Name: Verordnung (EU) 2016/679 des Europรคischen Parlaments und des Rates vom 27. April 2016 zum Schutz natรผrlicher Personen bei der Verarbeitung personenbezogener Daten, zum freien Datenverkehr und zur Aufhebung der Richtlinie 95/46/EG</small> | |||
</li> | |||
</ul> | |||
</section> | |||
<section><h3>Was ist eine EU-Verordnung?</h3> | |||
<ul> | |||
<li>Es gibt EU-Richtlinien und EU-Verordnungen</li> | |||
<li>Richtlinien sind ... exactly what it says on the tin. Mehr oder weniger grobe Richtlinien, die jeder EU-Mitgliedsstaat selbst implementiert</li> | |||
<li>Verordnungen gelten direkt in allen Mitgliedsstaaten (und gem. EWR-Abkommen nach Inkorporierung auch in Island, Liechtenstein und Norwegen)</li> | |||
<li>Alle 24 Versionen in den <a href="https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32016R0679">24 Amtssprachen</a> gelten gleichberechtigt รผberall (what could possibly go wrong?)</li> | |||
</ul> | |||
</section> | |||
<section><h3>Und deshalb รคndert sich jetzt alles?</h3> | |||
</section> | |||
<section><h3>Antwort: Nein.</h3> | |||
<p class="fragment"><small>Ein Groรteil des bisherigen Datenschutzrechts gilt im Grundsatz fort. Die allgemeine Aufbruchstimmung rรผhrt mehr daher, dass viele Unternehmen vor Inkrafttreten der DSGVO geltendes Recht verletzt haben, dies aber nicht geahndet wurde. Die allgemeine Befรผrchtung ist nun, dass Verstรถรe unter der DSGVO schneller, intensiver und mit Konsequenzen verfolgt werden.</small> | |||
<p class="fragment"><small>Weiterhin sind dort, wo sich tatsรคchlich รnderungen ergeben, diese hรคufig noch komplex oder schwer interpretierbar. Dadurch entsteht Rechtsunsicherheit.</small></p> | |||
</section> | |||
<section><h3>Aufbau DSGVO</h3> | |||
<ul> | |||
<li>Am Anfang stehen 173 sog. "Erwรคgungsgrรผnde"</li> | |||
<li>Dann gibt es 99 Artikel in 11 Kapiteln</li> | |||
<li>Die "wichtigsten" Abschnitte fรผr Normalsterbliche: Kapitel 2 ("Grundsรคtze") und Kapitel 4 ("Verantwortlicher und Auftragsverarbeiter")</li> | |||
<li>Eine recht schรถne รbersicht รผber die deutschen und englischen Fassungen der DSGVO gibt es unter <a href="https://dsgvo-gesetz.de">dsgvo-gesetz.de</a></li> | |||
</ul> | |||
</section> | |||
<section><h3>Geltungsbereich</h3> | |||
<ul> | |||
<li>Datenschutzrecht bezieht sich <b>immer und ausschlieรlich</b> auf "personenbezogene Daten"</li> | |||
<li>Personenbezug liegt aber fast immer vor, wenn zumindest <b>irgendjemand</b> in der Lage ist, ein Datum einer natรผrlichen Person zuzuordnen (bekanntes Beispiel: IP-Adressen)</li> | |||
<li>Gilt fรผr alle Verarbeitungen, die entweder in der EU stattfinden, oder die Daten von EU-Bรผrgern betreffen.</li> | |||
</ul> | |||
</section> | |||
<section><h3>Und was รคndert sich jetzt wirklich?</h3> | |||
</section> | |||
<section><h3>Verarbeitung</h3> | |||
<ul> | |||
<li>bezeichnet "[...] das Erheben, das Erfassen, die Organisation, das Ordnen, die Speicherung, die Anpassung oder Verรคnderung, das Auslesen, das Abfragen, die Verwendung, die Offenlegung durch รbermittlung, Verbreitung oder eine andere Form der Bereitstellung, den Abgleich oder die Verknรผpfung, die Einschrรคnkung, das Lรถschen oder die Vernichtung"</li> | |||
<li>(vgl. BDSG a.F.: Erhebung, Verarbeitung, Nutzung)</li> | |||
</ul> | |||
</section> | |||
<section><h3>Datenschutzbeauftragter</h3> | |||
<ul> | |||
<li>Fรผr die meisten kleinen und mittleren Unternehmen in Deutschland laut DSGVO nicht mehr vorgesehen</li> | |||
<li class="fragment">Aber: BDSG n.F. fรผhrt die alten deutschen Regelungen mit mehr als 9 Beschรคftigten fort (ยง 38 BDSG)</li> | |||
</ul> | |||
</section> | |||
<section><h3>Frage: Muss ich bei meiner App die DSGVO beachten?</h3> | |||
</section> | |||
<section><h3>Antwort: Ja.</h3> | |||
<p class="fragment"><small>Ausnahme: Statischer Content ohne Interaktionsmรถglichkeit und keinerlei Logging.</small></p> | |||
</section> | |||
<section><h3>Frage: Aber was wir entwickeln, wird nur intern von Mitarbeitern des Kunden genutzt. Da gilt die DSGVO also dann nicht?</h3> | |||
</section> | |||
<section><h3>Antwort: Doch.</h3> | |||
<p class="fragment"><small>Mitarbeiterdaten sind personenbezogene Daten. Selbst Kรผrzel/IDs/etc. sind personebezogene Daten, weil der Kunde sicher irgendwo die Mรถglichkeit hat, die ID einem Mitarbeiter zuzuordnen.</small></p> | |||
</section> | |||
<section><h3>Weitere Fragen zum Geltungs-/Anwendungsbereich?</h3> | |||
</section> | |||
</section> | |||
<section> | |||
<section><h3>Grundsรคtze des Datenschutzrechts</h3> | |||
</section> | |||
<section><h3>Verbot mit Erlaubnisvorbehalt</h3> | |||
<ul> | |||
<li>Jede Verarbeitung personenbezogener Daten ist eigentlich verboten.</li> | |||
<li>Dieser Grundsatz hat zwei Ausnahmen: | |||
<ul> | |||
<li>Die Person hat eingewilligt</li> | |||
<li>Ein Gesetz erlaubt die Verarbeitung</li> | |||
</ul> | |||
</li> | |||
<li>Praktisch keine รnderung zu bisher</li> | |||
<li class="fragment">Klassischer Fall der gesetzlichen Erlaubnis: Daten sind nรถtig zur Vertragserfรผllung (Bankdaten, Adresse, etc. bei Versandhandel)</li> | |||
</ul> | |||
</section> | |||
<section><h3>Datenschutzgrundsรคtze aus Art. 5</h3> | |||
<ul> | |||
<li>Zweckbindung</li> | |||
<li>Transparenz</li> | |||
<li>Datenminimierung</li> | |||
<li>Richtigkeit</li> | |||
<li>Speicherbegrenzung</li> | |||
<li>Integritรคt und Vertraulichkeit</li> | |||
<li>Rechenschaftspflicht</li> | |||
<li class="fragment">(Kein Direkterhebungsgrundsatz mehr!)</li> | |||
</ul> | |||
</section> | |||
<section><h3>Zweckbindung</h3> | |||
<ul> | |||
<li><b>Vor</b> dem Sammeln von personenbezogenen Daten muss klar sein, fรผr was die Daten erhoben werden</li> | |||
<li>Gilt insbesondere, wenn die Daten aufgrund einer Einwilligung verarbeitet werden</li> | |||
<li>Die Zweckbindung gilt aber auch fรผr aufgrund gesetzlicher Erlaubnis erhobene Daten</li> | |||
<li>In der Regel nicht Aufgabe des Dienstleisters, darauf zu achten</li> | |||
</ul> | |||
</section> | |||
<section><h3>Transparenz</h3> | |||
<ul> | |||
<li>Der Grund fรผr die 400 Mails zum Thema, die jeder von uns รผber die letzten paar Wochen bekommen hat</li> | |||
<li>Weiter ausgefรผhrt in Artt. 12ff. DSGVO</li> | |||
<li>Man muss vor der Verarbeitung betroffene Personen ausfรผhrlich, klar, verstรคndlich, einfach unterrichten</li> | |||
</ul> | |||
</section> | |||
<section><h3>Datenminimierung</h3> | |||
<ul> | |||
<li>Nur die Daten sammeln, die man unbedingt fรผr die Zweckerfรผllung braucht</li> | |||
<li>Grober Richtwert der oberen Grenze des Datensammelns selbst mit Einwilligung</li> | |||
<li>Ja, das macht Anwendungsbereiche wie ML nicht unbedingt einfacher, wo man anfangs hรคufig gar nicht weiร, was die interessantesten Komponenten sind</li> | |||
</ul> | |||
</section> | |||
<section><h3>Richtigkeit</h3> | |||
<ul> | |||
<li>Man kรถnnte denken, dass veraltete Daten auch dem Datenschutz dienen (alte Adressen erschweren das Tracking, etc.)</li> | |||
<li>Die DSGVO sieht aber vor, dass personenbezogene Daten, <b>wenn</b> sie rechtmรครig gesammelt werden dรผrfen, auch richtig und aktuell sein mรผssen</li> | |||
<li>Ergo: schon von User-Seite her die รnderung und Lรถschen mรถglichst einfach machen</li> | |||
<li>Nicht: "um dieses Feld zu รคndern, bitte Mail an Support schreiben"</li> | |||
</ul> | |||
</section> | |||
<section><h3>Speicherbegrenzung</h3> | |||
<ul> | |||
<li>Nur so lange speichern, wie es fรผr die Zweckerfรผllung unbedingt erforderlich ist</li> | |||
<li>Wenn in Verbindung stehende Daten darรผber hinaus archiviert werden sollen, anonymisieren</li> | |||
</ul> | |||
</section> | |||
<section><h3>Exkurs: anonymisierte Daten</h3> | |||
<ul> | |||
<li>Zuordnung zu realer Person ist nur mit unverhรคltnismรครig groรem Aufwand/Vorwissen mรถglich</li> | |||
<li>Pseudonymisierung ist keine Anonymisierung</li> | |||
</ul> | |||
</section> | |||
<section><h3>Integritรคt und Vertraulichkeit</h3> | |||
<ul> | |||
<li>Das ist der Punkt, welcher durch die "technischen und organisatorischen Maรnahmen" verwirklicht werden kann</li> | |||
<li>Angemessener Schutz der datenverarbeitenden Systeme</li> | |||
<li>Bei Auftragsverarbeitung: alle vorigen Punkte liegen grรถรtenteils im Bereich des Auftraggebers, <b>hier</b> ist hรคufig der Auftragnehmer mitverantwortlich!</li> | |||
</ul> | |||
</section> | |||
<section><h3>Rechenschaftspflicht</h3> | |||
<ul> | |||
<li>Art. 5 Abs. 2: "Der Verantwortliche ist fรผr die Einhaltung des Absatzes 1 verantwortlich und muss dessen Einhaltung nachweisen kรถnnen"</li> | |||
<li>Heiรt in der Regel: Dokumentation von Prozessen und deren Einhaltung</li> | |||
<li>Je leichter irgendwas technisch nachweisbar ist, desto besser fรผr alle</li> | |||
<li>Beispiel: wenn es heiรt, dass nur Pubkey-Auth fรผr SSH-Zugรคnge genutzt wird, dann PW-Auth abschalten. Sowas lรคsst sich auch einfach testen.</li> | |||
</ul> | |||
</section> | |||
</section> | |||
<section> | |||
<section><h3>Integritรคt und Vertraulichkeit</h3> | |||
</section> | |||
<section><h3>Moderne Passwortrichtlinien</h3> | |||
<img src="imgs/dsgvo_alles_schall_und_rauch/password_strength.png" width="60%"><br /> | |||
<small><a href="https://www.xkcd.com/936/">XKCD #936: Password Strength (CC BY-NC)</a></small> | |||
</section> | |||
<section><h3>Moderne Passwortrichtlinien</h3> | |||
<ul> | |||
<li>Fรผr fast alles: <b>Passwortmanager</b></li> | |||
<li>Sonst: ein paar Pass<b>phrasen</b> fรผr Disk-Encryption, GPG-Keys und als Masterpasswort fรผr PW-Manager</li> | |||
<li>lieber einfach zu merken und lang als mit vielen Sonderzeichen und kurz</li> | |||
<li>2FA fรผr wichtige Services</li> | |||
</ul> | |||
</section> | |||
<section><h3>Display-Sichtschutz fรผr Bahn und Flugzeug</h3> | |||
<ul> | |||
<li>Streng genommen wรคre schon das รถffentliche Surfen im internen Wiki ein Datenschutzverstoร, weil da hรคufig Realnamen drin stehen kรถnnen</li> | |||
<li>Zusรคtzlich: automatisch und/oder manuell Rechner sperren, sobald man den Platz verlรคsst</li> | |||
</ul> | |||
</section> | |||
<section><h3>Firmware</h3> | |||
<ul> | |||
<li>Intel AMT und รคhnliches deaktivieren</li> | |||
<li>Sich generell im Klaren darรผber sein, zu was euer BIOS so in der Lage ist</li> | |||
</ul> | |||
</section> | |||
<section><h3>Betriebssystem und Updates</h3> | |||
<ul> | |||
<li>Windows und Mac: Aktuell mit Auto-Update</li> | |||
<li>Linux: regelmรครig auf aktuellen Stand bringen</li> | |||
<li>Alle Zugriffe idR mit normalen User-Rechten, sudo nur wenn nรถtig</li> | |||
</ul> | |||
</section> | |||
<section><h3>Festplattenverschlรผsselung</h3> | |||
<ul> | |||
<li>Windows Pro: Bitlocker</li> | |||
<li>Mac: FileVault</li> | |||
<li>Linux: z.B. cryptsetup mit luks</li> | |||
</ul> | |||
</section> | |||
<section><h3>Backup</h3> | |||
<ul> | |||
<li>gut: vorhanden</li> | |||
<li>besser: verschlรผsselt und offsite</li> | |||
</ul> | |||
</section> | |||
</section> | |||
<section> | |||
<section><h3>Einschรคtzung des Kunden(projekts)</h3> | |||
</section> | |||
<section><h3>Datenschutzbeauftragter des Kunden</h3> | |||
<ul> | |||
<li>Wer ist das und wie erreicht man ihn?</li> | |||
<li>Informationen im Intranet bereithalten</li> | |||
</ul> | |||
</section> | |||
<section><h3>Produktiv-Daten</h3> | |||
<ul> | |||
<li>Wer hat Kontrolle?</li> | |||
<li>Wo liegen die Daten?</li> | |||
<li>Immer im Hinterkopf behalten: es dreht sich alles weiterhin rein um <b>personenbezogene</b> Daten.</li> | |||
<li>(Das bedeutet natรผrlich nicht, dass man Vertragspflichten zur Geheimhaltung ignorieren kann.)</li> | |||
</ul> | |||
</section> | |||
<section><h3>Berechtigungen des Teams</h3> | |||
<ul> | |||
<li>Wer vergibt die Berechtigungen?</li> | |||
<li>Gibt es innerhalb des Teams ein gemeinsames Verstรคndnis, nach welchem Prozess an die Produktiv-Daten gegangen wird?</li> | |||
</ul> | |||
</section> | |||
<section><h3>Betreibt man als Auftragnehmer irgendwelche Systeme fรผr den Kunden?</h3> | |||
<ul> | |||
<li>Sind da zB Testdaten drauf? Wie sehen die aus?</li> | |||
<li>Betreibt man vielleicht sogar Produktivsysteme fรผr Kunden?</li> | |||
</ul> | |||
</section> | |||
<section><h3>Freelancer im Team?</h3> | |||
<ul> | |||
<li>Mรผssen als Unterauftragnehmer in der Regel im Vertrag angegeben sein und mรผssen mit dem Hauptauftragnehmer wiederrum einen Vertrag รผber die Auftragsverarbeitung geschlossen haben</li> | |||
</ul> | |||
</section> | |||
<section><h3>Homeoffice?</h3> | |||
<ul> | |||
<li>Was sagt der AV-Vertrag zu Arbeiten auรerhalb von Arbeitgeber- oder Kunden-Offices?</li> | |||
<li>(Das deutsche Recht wรผrde ziemlich sicher ein Zugangsrecht des Auftraggebers zu Privatwohnungen verneinen. Aber ein AV-Vertrag kann vorsehen, dass Homeoffice nicht mรถglich sein soll.)</li> | |||
</ul> | |||
</section> | |||
<section><h3>Allgemein</h3> | |||
<ul> | |||
<li>AV-Vertrag ins Intranet</li> | |||
<li>Das Team sollte sich ein bisschen damit beschรคftigt haben (genauso wie mit dem eigentlichen Projektvertrag)</li> | |||
<li>TL, SM, PO sollte das ganze ein bisschen genauer gelesen haben</li> | |||
</ul> | |||
</section> | |||
</section> | |||
<section> | |||
<section><h3>Technische und organisatorische Maรnahmen</h3> | |||
</section> | |||
<section><h3>Rechtsgrundlage DSGVO</h3> | |||
<ul> | |||
<li>Relevante Norm: Art. 32 DSGVO; Inhalt:</li> | |||
<ul> | |||
<li>Pseudonymisierung und Verschlรผsselung personenbezogener Daten (lit a)</li> | |||
<li>Vertraulichkeit, Integritรคt, Verfรผgbarkeit und Belastbarkeit der Systeme und Dienste (lit b)</li> | |||
<li>Backup- und Wiederherstellungsfรคhigkeit (lit c)</li> | |||
<li>regelmรครigen รberprรผfung, Bewertung und Evaluierung der Wirksamkeit der Maรnahmen (lit d)</li> | |||
</ul> | |||
</ul> | |||
</section> | |||
<section><h3>Verhรคltnis zu Anlage zu ยง 9 Satz 1 BDSG-alt</h3> | |||
<ul> | |||
<li>Zutrittskontrolle (neu: lit b)</li> | |||
<li>Zugangskontrolle (neu: lit a, b)</li> | |||
<li>Zugriffskontrolle (neu: lit b)</li> | |||
<li>Weitergabekontrolle (neu: lit b)</li> | |||
<li>Eingabekontrolle (neu: lit b)</li> | |||
<li>Auftragskontrolle (neu: Art. 32 Abs. 4)</li> | |||
<li>Verfรผgbarkeitskontrolle (neu: lit c)</li> | |||
<li>Trennungsgebot (neu: lit b)</li> | |||
</ul> | |||
</section> | |||
<section><h3>Zutrittskontrolle</h3> | |||
<ul> | |||
<li>Hier geht es um den physischen Zugang zum Office. Ist abgeschlossen oder, wenn nicht, jemand am Empfang? Ist der Serverraum (sofern da Daten des Auftraggebers lagern) noch extra abgeschlossen?</li> | |||
</ul> | |||
</section> | |||
<section><h3>Zugangskontrolle</h3> | |||
<ul> | |||
<li>Rechner ist gesperrt, wenn grade keiner dran ist</li> | |||
<li>Rechner ist verschlรผsselt, wenn er geklaut wird</li> | |||
</ul> | |||
</section> | |||
<section><h3>Zugriffskontrolle</h3> | |||
<ul> | |||
<li>Hier geht es um <i>berechtigten</i> Zugriff: Wenn jemand schon darf, <b>was</b> darf er dann alles?</li> | |||
<li>letztlich: Berechtigungskonzept</li> | |||
</ul> | |||
</section> | |||
<section><h3>Weitergabekontrolle</h3> | |||
<ul> | |||
<li>Transportweg-Sicherungen: idR geht es hier also um verschlรผsselte Verbindung auf Kundensysteme, SSH, VPN, TLS, etc.</li> | |||
<li>Im Fall des tatsรคchlich physischen Transports (zB im Falle, dass ihr Screenshots/Logs aus Produktion lokal gespeichert habt fรผrs Debugging) greift wieder die Festplatten-Verschlรผsselung</li> | |||
</ul> | |||
</section> | |||
<section><h3>Eingabekontrolle</h3> | |||
<ul> | |||
<li>Wenn ihr grundsรคtzlich in der Lage seid, personenbezogene Daten beim Kunden auch zu รคndern (zB Zugriff auf Produktion), gibt es dann ein Logging dieser รnderungen? Kann also jemand im Nachhinein nachvollziehen, wer und wann irgendwelche Daten geรคndert hat?</li> | |||
</ul> | |||
</section> | |||
<section><h3>Auftragskontrolle</h3> | |||
<ul> | |||
<li>Einerseits, auf Auftragnehmer-Seite: sind die Mitarbeiter alle geschult und auf den Datenschutz verpflichtet?</li> | |||
<li>Andererseits, im Zusammenspiel mit Auftraggeber: werden Weisungen, die mit der Datenverarbeitung zu tun haben, ordentlich dokumentiert?</li> | |||
</ul> | |||
</section> | |||
<section><h3>Verfรผgbarkeitskontrolle</h3> | |||
<ul> | |||
<li>Backup- und Restore-Konzept. Ist fรผr den Auftragnehmer nur interessant, wenn er fรผr den Auftraggeber tatsรคchlich Systeme bereitstellt, auf denen Produktivdaten verarbeitet werden.</li> | |||
<li>(Backups von Geschรคftsdaten machen aber grundsรคtzlich auch ohne DSGVO Sinn.)</li> | |||
</ul> | |||
</section> | |||
<section><h3>Trennungsgebot</h3> | |||
<ul> | |||
<li>Unterschiedliche Daten (sei es aufgrund von Zweckbindung, besondere Kategorien von Daten etc.) mรผssen getrennt verarbeitet werden. Es reicht hier bereits eine logische Trennung (gleiche DB, verschiedene Tabellen). Liegt auch idR vollstรคndig im Verantwortungsbereich des Auftraggebers.</li> | |||
</ul> | |||
</section> | |||
</section> | |||
<section><h3>Slides</h3> | |||
Die jeweils aktuellen Slides zu diesem Vortrag sind auf GitHub verfรผgbar: <a href="https://github.com/ciil/talks">github.com/ciil/talks</a> | |||
</section> | |||
<section> | |||
<section><h3>Bonus-Slides</h3> | |||
</section> | |||
<section><h3>Kontaktformular ohne Einwilligung?</h3> | |||
<ul> | |||
<ul> | |||
<li>Ich kann Daten natรผrlich auch aufgrund eines anderen Erlaubnistatbestandes (Art. 6 I lit. b-f) verarbeiten.</li> | |||
<li>Unterschied: eine Einwilligung gilt idR erstmal unbegrenzt (bis zum Widerruf)</li> | |||
<li>Bei allen Erlaubnistatbestรคnden: Achtung Zweckbindung</li> | |||
<li>Wenn der Zweck wegfรคllt, unterliegen die Daten auf einmal einer Lรถschverpflichtung</li> | |||
</ul> | |||
</ul> | |||
</section> | |||
<section><h3>Eventanmeldung ohne Einwilligung?</h3> | |||
<ul> | |||
<ul> | |||
<li>Auch hier grundsรคtzlich braucht man grundsรคtzlich keine Einwilligung.</li> | |||
<li>Lรคsst sich erstmal schรถn auf Art. 6 I lit. b stรผtzen</li> | |||
<li>Sobald das Event rum ist, mรผssen theoretisch alle Daten gelรถscht sein (sind nicht mehr notwendig fรผr die Durchfรผhrung)</li> | |||
<li class="fragment">(Eine Abschlussmail mag zulรคssig sein.)</li> | |||
</ul> | |||
</ul> | |||
</section> | |||
<section><h3>Stete Grundsatzfrage: Was will ich denn damit anstellen?</h3> | |||
<ul> | |||
<ul> | |||
<li>Zweckbindung ist das A und O</li> | |||
<li>Verhindert immer genau das "Ich hab die Daten ja schon, also kann ich jetzt Werbung machen"</li> | |||
<li>Teileinwilligungen sind ... mรถglich, aber recht schwierig richtig hinzubekommen</li> | |||
</ul> | |||
</ul> | |||
</section> | |||
<section><h3>Ist Direktwerbung immer ein berechtigtes Interesse?</h3> | |||
<ul> | |||
<ul> | |||
<li>Erwรคgungsgrรผnde Nr. 47 S. 7 und Nr. 70 sprechen von "Direktwerbung" als berechtigtem Interesse</li> | |||
<li>Extra Widerspruchsrecht fรผr Direktwerbung: Art. 21 II und III</li> | |||
<li>Dass nun jegliche Daten gesammelt werden dรผrften, um damit unerwรผnschte Werbung an Betroffene zu schicken ist selbstverstรคndlich nicht Intention der DSGVO</li> | |||
<li class="fragment">DSGVO ist keine gesetzgeberische Meisterleistung</li> | |||
</ul> | |||
</ul> | |||
</section> | |||
<section><h3>Allgemein: Art. 6 I lit. f</h3> | |||
<ul> | |||
<ul> | |||
<li>Zwei Meinungen: 1. Super Auffangtatbestand!! 2. Viel zu weit, eng auszulegen!</li> | |||
<li>Bis jetzt eigentlich kein Mittelweg erkennbar</li> | |||
<li>Interessenabwรคgung gerade im werblichen Bereich anders bei Verbrauchern und gewerblichen Kunden?</li> | |||
<li>Den Unterschied automatisiert erkennen wahrscheinlich schwierig</li> | |||
</ul> | |||
</ul> | |||
</section> | |||
<section><h3>Eventfotographie zu PR-Zwecken</h3> | |||
<ul> | |||
<ul> | |||
<li>Verhรคltnis zw. KUG und DSGVO gerade Thema heiรer Debatten</li> | |||
<li>Wohl noch einer der Punkte, an denen Art. 6 I lit. f am ehesten greifen kรถnnten</li> | |||
<li>In jedem Fall: zumindest Informationspflichten: bei E-Mail-Bestรคtigung/Online-Anmeldung auch kein unverhรคltnismรครig groรer Aufwand (EG 62)</li> | |||
<li>Widerspruch anders als bei KUG wohl stets mรถglich</li> | |||
</ul> | |||
</ul> | |||
</section> | |||
<section><h3>Eventfotographie zu PR-Zwecken (Teil 2)</h3> | |||
<ul> | |||
<ul> | |||
<li>Je kleiner die Veranstaltung, desto stรคrker mรผssen Regelungen beachtet werden</li> | |||
<li>Rechte von Personen, die offensichtlich nicht fotographiert werden wollen, beachten</li> | |||
<li>Mรถglichst keine Namensnennung am Foto (Foto trotzdem pers.b. Daten)</li> | |||
<li>Situation beachten, keine Fotos von Personen mit Bier in der Hand etc.</li> | |||
</ul> | |||
</ul> | |||
</section> | |||
</section> | |||
</div> | |||
</div> | |||
<script src="reveal.js/lib/js/head.min.js"></script> | |||
<script src="reveal.js/js/reveal.js"></script> | |||
<script> | |||
// More info about config & dependencies: | |||
// - https://github.com/hakimel/reveal.js#configuration | |||
// - https://github.com/hakimel/reveal.js#dependencies | |||
Reveal.initialize({ | |||
dependencies: [ | |||
{ src: 'reveal.js/plugin/markdown/marked.js' }, | |||
{ src: 'reveal.js/plugin/markdown/markdown.js' }, | |||
{ src: 'reveal.js/plugin/notes/notes.js', async: true }, | |||
{ src: 'reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } } | |||
] | |||
}); | |||
</script> | |||
</body> | |||
</html> |
@@ -0,0 +1,22 @@ | |||
MIT License | |||
Copyright (c) 2018 Simon Lackerbauer | |||
Permission is hereby granted, free of charge, to any person obtaining a copy | |||
of this software and associated documentation files (the "Software"), to deal | |||
in the Software without restriction, including without limitation the rights | |||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
copies of the Software, and to permit persons to whom the Software is | |||
furnished to do so, subject to the following conditions: | |||
The above copyright notice and this permission notice shall be included in all | |||
copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
SOFTWARE. | |||
@@ -0,0 +1,13 @@ | |||
.idea/ | |||
*.iml | |||
*.iws | |||
*.eml | |||
out/ | |||
.DS_Store | |||
.svn | |||
log/*.log | |||
tmp/** | |||
node_modules/ | |||
.sass-cache | |||
css/reveal.min.css | |||
js/reveal.min.js |
@@ -0,0 +1,7 @@ | |||
language: node_js | |||
node_js: | |||
- 4 | |||
before_script: | |||
- npm install -g grunt-cli | |||
after_script: | |||
- grunt retire |
@@ -0,0 +1,23 @@ | |||
## Contributing | |||
Please keep the [issue tracker](http://github.com/hakimel/reveal.js/issues) limited to **bug reports**, **feature requests** and **pull requests**. | |||
### Personal Support | |||
If you have personal support or setup questions the best place to ask those are [StackOverflow](http://stackoverflow.com/questions/tagged/reveal.js). | |||
### Bug Reports | |||
When reporting a bug make sure to include information about which browser and operating system you are on as well as the necessary steps to reproduce the issue. If possible please include a link to a sample presentation where the bug can be tested. | |||
### Pull Requests | |||
- Should follow the coding style of the file you work in, most importantly: | |||
- Tabs to indent | |||
- Single-quoted strings | |||
- Should be made towards the **dev branch** | |||
- Should be submitted from a feature/topic branch (not your master) | |||
### Plugins | |||
Please do not submit plugins as pull requests. They should be maintained in their own separate repository. More information here: https://github.com/hakimel/reveal.js/wiki/Plugin-Guidelines |
@@ -0,0 +1,192 @@ | |||
/* global module:false */ | |||
module.exports = function(grunt) { | |||
var port = grunt.option('port') || 8000; | |||
var root = grunt.option('root') || '.'; | |||
if (!Array.isArray(root)) root = [root]; | |||
// Project configuration | |||
grunt.initConfig({ | |||
pkg: grunt.file.readJSON('package.json'), | |||
meta: { | |||
banner: | |||
'/*!\n' + | |||
' * reveal.js <%= pkg.version %> (<%= grunt.template.today("yyyy-mm-dd, HH:MM") %>)\n' + | |||
' * http://revealjs.com\n' + | |||
' * MIT licensed\n' + | |||
' *\n' + | |||
' * Copyright (C) 2017 Hakim El Hattab, http://hakim.se\n' + | |||
' */' | |||
}, | |||
qunit: { | |||
files: [ 'test/*.html' ] | |||
}, | |||
uglify: { | |||
options: { | |||
banner: '<%= meta.banner %>\n', | |||
screwIE8: false | |||
}, | |||
build: { | |||
src: 'js/reveal.js', | |||
dest: 'js/reveal.min.js' | |||
} | |||
}, | |||
sass: { | |||
core: { | |||
src: 'css/reveal.scss', | |||
dest: 'css/reveal.css' | |||
}, | |||
themes: { | |||
expand: true, | |||
cwd: 'css/theme/source', | |||
src: ['*.sass', '*.scss'], | |||
dest: 'css/theme', | |||
ext: '.css' | |||
} | |||
}, | |||
autoprefixer: { | |||
core: { | |||
src: 'css/reveal.css' | |||
} | |||
}, | |||
cssmin: { | |||
options: { | |||
compatibility: 'ie9' | |||
}, | |||
compress: { | |||
src: 'css/reveal.css', | |||
dest: 'css/reveal.min.css' | |||
} | |||
}, | |||
jshint: { | |||
options: { | |||
curly: false, | |||
eqeqeq: true, | |||
immed: true, | |||
esnext: true, | |||
latedef: 'nofunc', | |||
newcap: true, | |||
noarg: true, | |||
sub: true, | |||
undef: true, | |||
eqnull: true, | |||
browser: true, | |||
expr: true, | |||
globals: { | |||
head: false, | |||
module: false, | |||
console: false, | |||
unescape: false, | |||
define: false, | |||
exports: false | |||
} | |||
}, | |||
files: [ 'Gruntfile.js', 'js/reveal.js' ] | |||
}, | |||
connect: { | |||
server: { | |||
options: { | |||
port: port, | |||
base: root, | |||
livereload: true, | |||
open: true, | |||
useAvailablePort: true | |||
} | |||
} | |||
}, | |||
zip: { | |||
bundle: { | |||
src: [ | |||
'index.html', | |||
'css/**', | |||
'js/**', | |||
'lib/**', | |||
'images/**', | |||
'plugin/**', | |||
'**.md' | |||
], | |||
dest: 'reveal-js-presentation.zip' | |||
} | |||
}, | |||
watch: { | |||
js: { | |||
files: [ 'Gruntfile.js', 'js/reveal.js' ], | |||
tasks: 'js' | |||
}, | |||
theme: { | |||
files: [ | |||
'css/theme/source/*.sass', | |||
'css/theme/source/*.scss', | |||
'css/theme/template/*.sass', | |||
'css/theme/template/*.scss' | |||
], | |||
tasks: 'css-themes' | |||
}, | |||
css: { | |||
files: [ 'css/reveal.scss' ], | |||
tasks: 'css-core' | |||
}, | |||
html: { | |||
files: root.map(path => path + '/*.html') | |||
}, | |||
markdown: { | |||
files: root.map(path => path + '/*.md') | |||
}, | |||
options: { | |||
livereload: true | |||
} | |||
}, | |||
retire: { | |||
js: [ 'js/reveal.js', 'lib/js/*.js', 'plugin/**/*.js' ], | |||
node: [ '.' ] | |||
} | |||
}); | |||
// Dependencies | |||
grunt.loadNpmTasks( 'grunt-contrib-connect' ); | |||
grunt.loadNpmTasks( 'grunt-contrib-cssmin' ); | |||
grunt.loadNpmTasks( 'grunt-contrib-jshint' ); | |||
grunt.loadNpmTasks( 'grunt-contrib-qunit' ); | |||
grunt.loadNpmTasks( 'grunt-contrib-uglify' ); | |||
grunt.loadNpmTasks( 'grunt-contrib-watch' ); | |||
grunt.loadNpmTasks( 'grunt-autoprefixer' ); | |||
grunt.loadNpmTasks( 'grunt-retire' ); | |||
grunt.loadNpmTasks( 'grunt-sass' ); | |||
grunt.loadNpmTasks( 'grunt-zip' ); | |||
// Default task | |||
grunt.registerTask( 'default', [ 'css', 'js' ] ); | |||
// JS task | |||
grunt.registerTask( 'js', [ 'jshint', 'uglify', 'qunit' ] ); | |||
// Theme CSS | |||
grunt.registerTask( 'css-themes', [ 'sass:themes' ] ); | |||
// Core framework CSS | |||
grunt.registerTask( 'css-core', [ 'sass:core', 'autoprefixer', 'cssmin' ] ); | |||
// All CSS | |||
grunt.registerTask( 'css', [ 'sass', 'autoprefixer', 'cssmin' ] ); | |||
// Package presentation to archive | |||
grunt.registerTask( 'package', [ 'default', 'zip' ] ); | |||
// Serve presentation locally | |||
grunt.registerTask( 'serve', [ 'connect', 'watch' ] ); | |||
// Run tests | |||
grunt.registerTask( 'test', [ 'jshint', 'qunit' ] ); | |||
}; |
@@ -0,0 +1,19 @@ | |||
Copyright (C) 2017 Hakim El Hattab, http://hakim.se, and reveal.js contributors | |||
Permission is hereby granted, free of charge, to any person obtaining a copy | |||
of this software and associated documentation files (the "Software"), to deal | |||
in the Software without restriction, including without limitation the rights | |||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
copies of the Software, and to permit persons to whom the Software is | |||
furnished to do so, subject to the following conditions: | |||
The above copyright notice and this permission notice shall be included in | |||
all copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |||
THE SOFTWARE. |
@@ -0,0 +1,27 @@ | |||
{ | |||
"name": "reveal.js", | |||
"version": "3.6.0", | |||
"main": [ | |||
"js/reveal.js", | |||
"css/reveal.css" | |||
], | |||
"homepage": "http://revealjs.com", | |||
"license": "MIT", | |||
"description": "The HTML Presentation Framework", | |||
"authors": [ | |||
"Hakim El Hattab <hakim.elhattab@gmail.com>" | |||
], | |||
"dependencies": { | |||
"headjs": "~1.0.3" | |||
}, | |||
"repository": { | |||
"type": "git", | |||
"url": "git://github.com/hakimel/reveal.js.git" | |||
}, | |||
"ignore": [ | |||
"**/.*", | |||
"node_modules", | |||
"bower_components", | |||
"test" | |||
] | |||
} |
@@ -0,0 +1,203 @@ | |||
/* Default Print Stylesheet Template | |||
by Rob Glazebrook of CSSnewbie.com | |||
Last Updated: June 4, 2008 | |||
Feel free (nay, compelled) to edit, append, and | |||
manipulate this file as you see fit. */ | |||
@media print { | |||
/* SECTION 1: Set default width, margin, float, and | |||
background. This prevents elements from extending | |||
beyond the edge of the printed page, and prevents | |||
unnecessary background images from printing */ | |||
html { | |||
background: #fff; | |||
width: auto; | |||
height: auto; | |||
overflow: visible; | |||
} | |||
body { | |||
background: #fff; | |||
font-size: 20pt; | |||
width: auto; | |||
height: auto; | |||
border: 0; | |||
margin: 0 5%; | |||
padding: 0; | |||
overflow: visible; | |||
float: none !important; | |||
} | |||
/* SECTION 2: Remove any elements not needed in print. | |||
This would include navigation, ads, sidebars, etc. */ | |||
.nestedarrow, | |||
.controls, | |||
.fork-reveal, | |||
.share-reveal, | |||
.state-background, | |||
.reveal .progress, | |||
.reveal .backgrounds, | |||
.reveal .slide-number { | |||
display: none !important; | |||
} | |||
/* SECTION 3: Set body font face, size, and color. | |||
Consider using a serif font for readability. */ | |||
body, p, td, li, div { | |||
font-size: 20pt!important; | |||
font-family: Georgia, "Times New Roman", Times, serif !important; | |||
color: #000; | |||
} | |||
/* SECTION 4: Set heading font face, sizes, and color. | |||
Differentiate your headings from your body text. | |||
Perhaps use a large sans-serif for distinction. */ | |||
h1,h2,h3,h4,h5,h6 { | |||
color: #000!important; | |||
height: auto; | |||
line-height: normal; | |||
font-family: Georgia, "Times New Roman", Times, serif !important; | |||
text-shadow: 0 0 0 #000 !important; | |||
text-align: left; | |||
letter-spacing: normal; | |||
} | |||
/* Need to reduce the size of the fonts for printing */ | |||
h1 { font-size: 28pt !important; } | |||
h2 { font-size: 24pt !important; } | |||
h3 { font-size: 22pt !important; } | |||
h4 { font-size: 22pt !important; font-variant: small-caps; } | |||
h5 { font-size: 21pt !important; } | |||
h6 { font-size: 20pt !important; font-style: italic; } | |||
/* SECTION 5: Make hyperlinks more usable. | |||
Ensure links are underlined, and consider appending | |||
the URL to the end of the link for usability. */ | |||
a:link, | |||
a:visited { | |||
color: #000 !important; | |||
font-weight: bold; | |||
text-decoration: underline; | |||
} | |||
/* | |||
.reveal a:link:after, | |||
.reveal a:visited:after { | |||
content: " (" attr(href) ") "; | |||
color: #222 !important; | |||
font-size: 90%; | |||
} | |||
*/ | |||
/* SECTION 6: more reveal.js specific additions by @skypanther */ | |||
ul, ol, div, p { | |||
visibility: visible; | |||
position: static; | |||
width: auto; | |||
height: auto; | |||
display: block; | |||
overflow: visible; | |||
margin: 0; | |||
text-align: left !important; | |||
} | |||
.reveal pre, | |||
.reveal table { | |||
margin-left: 0; | |||
margin-right: 0; | |||
} | |||
.reveal pre code { | |||
padding: 20px; | |||
border: 1px solid #ddd; | |||
} | |||
.reveal blockquote { | |||
margin: 20px 0; | |||
} | |||
.reveal .slides { | |||
position: static !important; | |||
width: auto !important; | |||
height: auto !important; | |||
left: 0 !important; | |||
top: 0 !important; | |||
margin-left: 0 !important; | |||
margin-top: 0 !important; | |||
padding: 0 !important; | |||
zoom: 1 !important; | |||
overflow: visible !important; | |||
display: block !important; | |||
text-align: left !important; | |||
-webkit-perspective: none; | |||
-moz-perspective: none; | |||
-ms-perspective: none; | |||
perspective: none; | |||
-webkit-perspective-origin: 50% 50%; | |||
-moz-perspective-origin: 50% 50%; | |||
-ms-perspective-origin: 50% 50%; | |||
perspective-origin: 50% 50%; | |||
} | |||
.reveal .slides section { | |||
visibility: visible !important; | |||
position: static !important; | |||
width: auto !important; | |||
height: auto !important; | |||
display: block !important; | |||
overflow: visible !important; | |||
left: 0 !important; | |||
top: 0 !important; | |||
margin-left: 0 !important; | |||
margin-top: 0 !important; | |||
padding: 60px 20px !important; | |||
z-index: auto !important; | |||
opacity: 1 !important; | |||
page-break-after: always !important; | |||
-webkit-transform-style: flat !important; | |||
-moz-transform-style: flat !important; | |||
-ms-transform-style: flat !important; | |||
transform-style: flat !important; | |||
-webkit-transform: none !important; | |||
-moz-transform: none !important; | |||
-ms-transform: none !important; | |||
transform: none !important; | |||
-webkit-transition: none !important; | |||
-moz-transition: none !important; | |||
-ms-transition: none !important; | |||
transition: none !important; | |||
} | |||
.reveal .slides section.stack { | |||
padding: 0 !important; | |||
} | |||
.reveal section:last-of-type { | |||
page-break-after: avoid !important; | |||
} | |||
.reveal section .fragment { | |||
opacity: 1 !important; | |||
visibility: visible !important; | |||
-webkit-transform: none !important; | |||
-moz-transform: none !important; | |||
-ms-transform: none !important; | |||
transform: none !important; | |||
} | |||
.reveal section img { | |||
display: block; | |||
margin: 15px 0px; | |||
background: rgba(255,255,255,1); | |||
border: 1px solid #666; | |||
box-shadow: none; | |||
} | |||
.reveal section small { | |||
font-size: 0.8em; | |||
} | |||
} |
@@ -0,0 +1,178 @@ | |||
/** | |||
* This stylesheet is used to print reveal.js | |||
* presentations to PDF. | |||
* | |||
* https://github.com/hakimel/reveal.js#pdf-export | |||
*/ | |||
* { | |||
-webkit-print-color-adjust: exact; | |||
} | |||
body { | |||
margin: 0 auto !important; | |||
border: 0; | |||
padding: 0; | |||
float: none !important; | |||
overflow: visible; | |||
} | |||
html { | |||
width: 100%; | |||
height: 100%; | |||
overflow: visible; | |||
} | |||
/* Remove any elements not needed in print. */ | |||
.nestedarrow, | |||
.reveal .controls, | |||
.reveal .progress, | |||
.reveal .playback, | |||
.reveal.overview, | |||
.fork-reveal, | |||
.share-reveal, | |||
.state-background { | |||
display: none !important; | |||
} | |||
h1, h2, h3, h4, h5, h6 { | |||
text-shadow: 0 0 0 #000 !important; | |||
} | |||
.reveal pre code { | |||
overflow: hidden !important; | |||
font-family: Courier, 'Courier New', monospace !important; | |||
} | |||
ul, ol, div, p { | |||
visibility: visible; | |||
position: static; | |||
width: auto; | |||
height: auto; | |||
display: block; | |||
overflow: visible; | |||
margin: auto; | |||
} | |||
.reveal { | |||
width: auto !important; | |||
height: auto !important; | |||
overflow: hidden !important; | |||
} | |||
.reveal .slides { | |||
position: static; | |||
width: 100% !important; | |||
height: auto !important; | |||
zoom: 1 !important; | |||
left: auto; | |||
top: auto; | |||
margin: 0 !important; | |||
padding: 0 !important; | |||
overflow: visible; | |||
display: block; | |||
-webkit-perspective: none; | |||
-moz-perspective: none; | |||
-ms-perspective: none; | |||
perspective: none; | |||
-webkit-perspective-origin: 50% 50%; /* there isn't a none/auto value but 50-50 is the default */ | |||
-moz-perspective-origin: 50% 50%; | |||
-ms-perspective-origin: 50% 50%; | |||
perspective-origin: 50% 50%; | |||
} | |||
.reveal .slides .pdf-page { | |||
position: relative; | |||
overflow: hidden; | |||
z-index: 1; | |||
page-break-after: always; | |||
} | |||
.reveal .slides section { | |||
visibility: visible !important; | |||
display: block !important; | |||
position: absolute !important; | |||
margin: 0 !important; | |||
padding: 0 !important; | |||
box-sizing: border-box !important; | |||
min-height: 1px; | |||
opacity: 1 !important; | |||
-webkit-transform-style: flat !important; | |||
-moz-transform-style: flat !important; | |||
-ms-transform-style: flat !important; | |||
transform-style: flat !important; | |||
-webkit-transform: none !important; | |||
-moz-transform: none !important; | |||
-ms-transform: none !important; | |||
transform: none !important; | |||
} | |||
.reveal section.stack { | |||
position: relative !important; | |||
margin: 0 !important; | |||
padding: 0 !important; | |||
page-break-after: avoid !important; | |||
height: auto !important; | |||
min-height: auto !important; | |||
} | |||
.reveal img { | |||
box-shadow: none; | |||
} | |||
.reveal .roll { | |||
overflow: visible; | |||
line-height: 1em; | |||
} | |||
/* Slide backgrounds are placed inside of their slide when exporting to PDF */ | |||
.reveal .slide-background { | |||
display: block !important; | |||
position: absolute; | |||
top: 0; | |||
left: 0; | |||
width: 100%; | |||
height: 100%; | |||
z-index: auto !important; | |||
} | |||
/* Display slide speaker notes when 'showNotes' is enabled */ | |||
.reveal.show-notes { | |||
max-width: none; | |||
max-height: none; | |||
} | |||
.reveal .speaker-notes-pdf { | |||
display: block; | |||
width: 100%; | |||
height: auto; | |||
max-height: none; | |||
top: auto; | |||
right: auto; | |||
bottom: auto; | |||
left: auto; | |||
z-index: 100; | |||
} | |||
/* Layout option which makes notes appear on a separate page */ | |||
.reveal .speaker-notes-pdf[data-layout="separate-page"] { | |||
position: relative; | |||
color: inherit; | |||
background-color: transparent; | |||
padding: 20px; | |||
page-break-after: always; | |||
border: 0; | |||
} | |||
/* Display slide numbers when 'slideNumber' is enabled */ | |||
.reveal .slide-number-pdf { | |||
display: block; | |||
position: absolute; | |||
font-size: 14px; | |||
} |
@@ -0,0 +1,21 @@ | |||
## Dependencies | |||
Themes are written using Sass to keep things modular and reduce the need for repeated selectors across files. Make sure that you have the reveal.js development environment including the Grunt dependencies installed before proceeding: https://github.com/hakimel/reveal.js#full-setup | |||
## Creating a Theme | |||
To create your own theme, start by duplicating a ```.scss``` file in [/css/theme/source](https://github.com/hakimel/reveal.js/blob/master/css/theme/source). It will be automatically compiled by Grunt from Sass to CSS (see the [Gruntfile](https://github.com/hakimel/reveal.js/blob/master/Gruntfile.js)) when you run `npm run build -- css-themes`. | |||
Each theme file does four things in the following order: | |||
1. **Include [/css/theme/template/mixins.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/mixins.scss)** | |||
Shared utility functions. | |||
2. **Include [/css/theme/template/settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss)** | |||
Declares a set of custom variables that the template file (step 4) expects. Can be overridden in step 3. | |||
3. **Override** | |||
This is where you override the default theme. Either by specifying variables (see [settings.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/settings.scss) for reference) or by adding any selectors and styles you please. | |||
4. **Include [/css/theme/template/theme.scss](https://github.com/hakimel/reveal.js/blob/master/css/theme/template/theme.scss)** | |||
The template theme file which will generate final CSS output based on the currently defined variables. |
@@ -0,0 +1,268 @@ | |||
/** | |||
* Beige theme for reveal.js. | |||
* | |||
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se | |||
*/ | |||
@import url(../../lib/font/league-gothic/league-gothic.css); | |||
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); | |||
/********************************************* | |||
* GLOBAL STYLES | |||
*********************************************/ | |||
body { | |||
background: #f7f2d3; | |||
background: -moz-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); | |||
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, white), color-stop(100%, #f7f2d3)); | |||
background: -webkit-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); | |||
background: -o-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); | |||
background: -ms-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); | |||
background: radial-gradient(center, circle cover, white 0%, #f7f2d3 100%); | |||
background-color: #f7f3de; } | |||
.reveal { | |||
font-family: "Lato", sans-serif; | |||
font-size: 40px; | |||
font-weight: normal; | |||
color: #333; } | |||
::selection { | |||
color: #fff; | |||
background: rgba(79, 64, 28, 0.99); | |||
text-shadow: none; } | |||
::-moz-selection { | |||
color: #fff; | |||
background: rgba(79, 64, 28, 0.99); | |||
text-shadow: none; } | |||
.reveal .slides > section, | |||
.reveal .slides > section > section { | |||
line-height: 1.3; | |||
font-weight: inherit; } | |||
/********************************************* | |||
* HEADERS | |||
*********************************************/ | |||
.reveal h1, | |||
.reveal h2, | |||
.reveal h3, | |||
.reveal h4, | |||
.reveal h5, | |||
.reveal h6 { | |||
margin: 0 0 20px 0; | |||
color: #333; | |||
font-family: "League Gothic", Impact, sans-serif; | |||
font-weight: normal; | |||
line-height: 1.2; | |||
letter-spacing: normal; | |||
text-transform: uppercase; | |||
text-shadow: none; | |||
word-wrap: break-word; } | |||
.reveal h1 { | |||
font-size: 3.77em; } | |||
.reveal h2 { | |||
font-size: 2.11em; } | |||
.reveal h3 { | |||
font-size: 1.55em; } | |||
.reveal h4 { | |||
font-size: 1em; } | |||
.reveal h1 { | |||
text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); } | |||
/********************************************* | |||
* OTHER | |||
*********************************************/ | |||
.reveal p { | |||
margin: 20px 0; | |||
line-height: 1.3; } | |||
/* Ensure certain elements are never larger than the slide itself */ | |||
.reveal img, | |||
.reveal video, | |||
.reveal iframe { | |||
max-width: 95%; | |||
max-height: 95%; } | |||
.reveal strong, | |||
.reveal b { | |||
font-weight: bold; } | |||
.reveal em { | |||
font-style: italic; } | |||
.reveal ol, | |||
.reveal dl, | |||
.reveal ul { | |||
display: inline-block; | |||
text-align: left; | |||
margin: 0 0 0 1em; } | |||
.reveal ol { | |||
list-style-type: decimal; } | |||
.reveal ul { | |||
list-style-type: disc; } | |||
.reveal ul ul { | |||
list-style-type: square; } | |||
.reveal ul ul ul { | |||
list-style-type: circle; } | |||
.reveal ul ul, | |||
.reveal ul ol, | |||
.reveal ol ol, | |||
.reveal ol ul { | |||
display: block; | |||
margin-left: 40px; } | |||
.reveal dt { | |||
font-weight: bold; } | |||
.reveal dd { | |||
margin-left: 40px; } | |||
.reveal blockquote { | |||
display: block; | |||
position: relative; | |||
width: 70%; | |||
margin: 20px auto; | |||
padding: 5px; | |||
font-style: italic; | |||
background: rgba(255, 255, 255, 0.05); | |||
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } | |||
.reveal blockquote p:first-child, | |||
.reveal blockquote p:last-child { | |||
display: inline-block; } | |||
.reveal q { | |||
font-style: italic; } | |||
.reveal pre { | |||
display: block; | |||
position: relative; | |||
width: 90%; | |||
margin: 20px auto; | |||
text-align: left; | |||
font-size: 0.55em; | |||
font-family: monospace; | |||
line-height: 1.2em; | |||
word-wrap: break-word; | |||
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } | |||
.reveal code { | |||
font-family: monospace; | |||
text-transform: none; } | |||
.reveal pre code { | |||
display: block; | |||
padding: 5px; | |||
overflow: auto; | |||
max-height: 400px; | |||
word-wrap: normal; } | |||
.reveal table { | |||
margin: auto; | |||
border-collapse: collapse; | |||
border-spacing: 0; } | |||
.reveal table th { | |||
font-weight: bold; } | |||
.reveal table th, | |||
.reveal table td { | |||
text-align: left; | |||
padding: 0.2em 0.5em 0.2em 0.5em; | |||
border-bottom: 1px solid; } | |||
.reveal table th[align="center"], | |||
.reveal table td[align="center"] { | |||
text-align: center; } | |||
.reveal table th[align="right"], | |||
.reveal table td[align="right"] { | |||
text-align: right; } | |||
.reveal table tbody tr:last-child th, | |||
.reveal table tbody tr:last-child td { | |||
border-bottom: none; } | |||
.reveal sup { | |||
vertical-align: super; } | |||
.reveal sub { | |||
vertical-align: sub; } | |||
.reveal small { | |||
display: inline-block; | |||
font-size: 0.6em; | |||
line-height: 1.2em; | |||
vertical-align: top; } | |||
.reveal small * { | |||
vertical-align: top; } | |||
/********************************************* | |||
* LINKS | |||
*********************************************/ | |||
.reveal a { | |||
color: #8b743d; | |||
text-decoration: none; | |||
-webkit-transition: color .15s ease; | |||
-moz-transition: color .15s ease; | |||
transition: color .15s ease; } | |||
.reveal a:hover { | |||
color: #c0a86e; | |||
text-shadow: none; | |||
border: none; } | |||
.reveal .roll span:after { | |||
color: #fff; | |||
background: #564826; } | |||
/********************************************* | |||
* IMAGES | |||
*********************************************/ | |||
.reveal section img { | |||
margin: 15px 0px; | |||
background: rgba(255, 255, 255, 0.12); | |||
border: 4px solid #333; | |||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } | |||
.reveal section img.plain { | |||
border: 0; | |||
box-shadow: none; } | |||
.reveal a img { | |||
-webkit-transition: all .15s linear; | |||
-moz-transition: all .15s linear; | |||
transition: all .15s linear; } | |||
.reveal a:hover img { | |||
background: rgba(255, 255, 255, 0.2); | |||
border-color: #8b743d; | |||
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } | |||
/********************************************* | |||
* NAVIGATION CONTROLS | |||
*********************************************/ | |||
.reveal .controls { | |||
color: #8b743d; } | |||
/********************************************* | |||
* PROGRESS BAR | |||
*********************************************/ | |||
.reveal .progress { | |||
background: rgba(0, 0, 0, 0.2); | |||
color: #8b743d; } | |||
.reveal .progress span { | |||
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); | |||
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); | |||
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } |
@@ -0,0 +1,264 @@ | |||
/** | |||
* Black theme for reveal.js. This is the opposite of the 'white' theme. | |||
* | |||
* By Hakim El Hattab, http://hakim.se | |||
*/ | |||
@import url(../../lib/font/source-sans-pro/source-sans-pro.css); | |||
section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 { | |||
color: #222; } | |||
/********************************************* | |||
* GLOBAL STYLES | |||
*********************************************/ | |||
body { | |||
background: #222; | |||
background-color: #222; } | |||
.reveal { | |||
font-family: "Source Sans Pro", Helvetica, sans-serif; | |||
font-size: 42px; | |||
font-weight: normal; | |||
color: #fff; } | |||
::selection { | |||
color: #fff; | |||
background: #bee4fd; | |||
text-shadow: none; } | |||
::-moz-selection { | |||
color: #fff; | |||
background: #bee4fd; | |||
text-shadow: none; } | |||
.reveal .slides > section, | |||
.reveal .slides > section > section { | |||
line-height: 1.3; | |||
font-weight: inherit; } | |||
/********************************************* | |||
* HEADERS | |||
*********************************************/ | |||
.reveal h1, | |||
.reveal h2, | |||
.reveal h3, | |||
.reveal h4, | |||
.reveal h5, | |||
.reveal h6 { | |||
margin: 0 0 20px 0; | |||
color: #fff; | |||
font-family: "Source Sans Pro", Helvetica, sans-serif; | |||
font-weight: 600; | |||
line-height: 1.2; | |||
letter-spacing: normal; | |||
text-transform: uppercase; | |||
text-shadow: none; | |||
word-wrap: break-word; } | |||
.reveal h1 { | |||
font-size: 2.5em; } | |||
.reveal h2 { | |||
font-size: 1.6em; } | |||
.reveal h3 { | |||
font-size: 1.3em; } | |||
.reveal h4 { | |||
font-size: 1em; } | |||
.reveal h1 { | |||
text-shadow: none; } | |||
/********************************************* | |||
* OTHER | |||
*********************************************/ | |||
.reveal p { | |||
margin: 20px 0; | |||
line-height: 1.3; } | |||
/* Ensure certain elements are never larger than the slide itself */ | |||
.reveal img, | |||
.reveal video, | |||
.reveal iframe { | |||
max-width: 95%; | |||
max-height: 95%; } | |||
.reveal strong, | |||
.reveal b { | |||
font-weight: bold; } | |||
.reveal em { | |||
font-style: italic; } | |||
.reveal ol, | |||
.reveal dl, | |||
.reveal ul { | |||
display: inline-block; | |||
text-align: left; | |||
margin: 0 0 0 1em; } | |||
.reveal ol { | |||
list-style-type: decimal; } | |||
.reveal ul { | |||
list-style-type: disc; } | |||
.reveal ul ul { | |||
list-style-type: square; } | |||
.reveal ul ul ul { | |||
list-style-type: circle; } | |||
.reveal ul ul, | |||
.reveal ul ol, | |||
.reveal ol ol, | |||
.reveal ol ul { | |||
display: block; | |||
margin-left: 40px; } | |||
.reveal dt { | |||
font-weight: bold; } | |||
.reveal dd { | |||
margin-left: 40px; } | |||
.reveal blockquote { | |||
display: block; | |||
position: relative; | |||
width: 70%; | |||
margin: 20px auto; | |||
padding: 5px; | |||
font-style: italic; | |||
background: rgba(255, 255, 255, 0.05); | |||
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } | |||
.reveal blockquote p:first-child, | |||
.reveal blockquote p:last-child { | |||
display: inline-block; } | |||
.reveal q { | |||
font-style: italic; } | |||
.reveal pre { | |||
display: block; | |||
position: relative; | |||
width: 90%; | |||
margin: 20px auto; | |||
text-align: left; | |||
font-size: 0.55em; | |||
font-family: monospace; | |||
line-height: 1.2em; | |||
word-wrap: break-word; | |||
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } | |||
.reveal code { | |||
font-family: monospace; | |||
text-transform: none; } | |||
.reveal pre code { | |||
display: block; | |||
padding: 5px; | |||
overflow: auto; | |||
max-height: 400px; | |||
word-wrap: normal; } | |||
.reveal table { | |||
margin: auto; | |||
border-collapse: collapse; | |||
border-spacing: 0; } | |||
.reveal table th { | |||
font-weight: bold; } | |||
.reveal table th, | |||
.reveal table td { | |||
text-align: left; | |||
padding: 0.2em 0.5em 0.2em 0.5em; | |||
border-bottom: 1px solid; } | |||
.reveal table th[align="center"], | |||
.reveal table td[align="center"] { | |||
text-align: center; } | |||
.reveal table th[align="right"], | |||
.reveal table td[align="right"] { | |||
text-align: right; } | |||
.reveal table tbody tr:last-child th, | |||
.reveal table tbody tr:last-child td { | |||
border-bottom: none; } | |||
.reveal sup { | |||
vertical-align: super; } | |||
.reveal sub { | |||
vertical-align: sub; } | |||
.reveal small { | |||
display: inline-block; | |||
font-size: 0.6em; | |||
line-height: 1.2em; | |||
vertical-align: top; } | |||
.reveal small * { | |||
vertical-align: top; } | |||
/********************************************* | |||
* LINKS | |||
*********************************************/ | |||
.reveal a { | |||
color: #42affa; | |||
text-decoration: none; | |||
-webkit-transition: color .15s ease; | |||
-moz-transition: color .15s ease; | |||
transition: color .15s ease; } | |||
.reveal a:hover { | |||
color: #8dcffc; | |||
text-shadow: none; | |||
border: none; } | |||
.reveal .roll span:after { | |||
color: #fff; | |||
background: #068de9; } | |||
/********************************************* | |||
* IMAGES | |||
*********************************************/ | |||
.reveal section img { | |||
margin: 15px 0px; | |||
background: rgba(255, 255, 255, 0.12); | |||
border: 4px solid #fff; | |||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } | |||
.reveal section img.plain { | |||
border: 0; | |||
box-shadow: none; } | |||
.reveal a img { | |||
-webkit-transition: all .15s linear; | |||
-moz-transition: all .15s linear; | |||
transition: all .15s linear; } | |||
.reveal a:hover img { | |||
background: rgba(255, 255, 255, 0.2); | |||
border-color: #42affa; | |||
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } | |||
/********************************************* | |||
* NAVIGATION CONTROLS | |||
*********************************************/ | |||
.reveal .controls { | |||
color: #42affa; } | |||
/********************************************* | |||
* PROGRESS BAR | |||
*********************************************/ | |||
.reveal .progress { | |||
background: rgba(0, 0, 0, 0.2); | |||
color: #42affa; } | |||
.reveal .progress span { | |||
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); | |||
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); | |||
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } |
@@ -0,0 +1,287 @@ | |||
/** | |||
* Blood theme for reveal.js | |||
* Author: Walther http://github.com/Walther | |||
* | |||
* Designed to be used with highlight.js theme | |||
* "monokai_sublime.css" available from | |||
* https://github.com/isagalaev/highlight.js/ | |||
* | |||
* For other themes, change $codeBackground accordingly. | |||
* | |||
*/ | |||
@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic); | |||
/********************************************* | |||
* GLOBAL STYLES | |||
*********************************************/ | |||
body { | |||
background: #222; | |||
background-color: #222; } | |||
.reveal { | |||
font-family: Ubuntu, "sans-serif"; | |||
font-size: 40px; | |||
font-weight: normal; | |||
color: #eee; } | |||
::selection { | |||
color: #fff; | |||
background: #a23; | |||
text-shadow: none; } | |||
::-moz-selection { | |||
color: #fff; | |||
background: #a23; | |||
text-shadow: none; } | |||
.reveal .slides > section, | |||
.reveal .slides > section > section { | |||
line-height: 1.3; | |||
font-weight: inherit; } | |||
/********************************************* | |||
* HEADERS | |||
*********************************************/ | |||
.reveal h1, | |||
.reveal h2, | |||
.reveal h3, | |||
.reveal h4, | |||
.reveal h5, | |||
.reveal h6 { | |||
margin: 0 0 20px 0; | |||
color: #eee; | |||
font-family: Ubuntu, "sans-serif"; | |||
font-weight: normal; | |||
line-height: 1.2; | |||
letter-spacing: normal; | |||
text-transform: uppercase; | |||
text-shadow: 2px 2px 2px #222; | |||
word-wrap: break-word; } | |||
.reveal h1 { | |||
font-size: 3.77em; } | |||
.reveal h2 { | |||
font-size: 2.11em; } | |||
.reveal h3 { | |||
font-size: 1.55em; } | |||
.reveal h4 { | |||
font-size: 1em; } | |||
.reveal h1 { | |||
text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); } | |||
/********************************************* | |||
* OTHER | |||
*********************************************/ | |||
.reveal p { | |||
margin: 20px 0; | |||
line-height: 1.3; } | |||
/* Ensure certain elements are never larger than the slide itself */ | |||
.reveal img, | |||
.reveal video, | |||
.reveal iframe { | |||
max-width: 95%; | |||
max-height: 95%; } | |||
.reveal strong, | |||
.reveal b { | |||
font-weight: bold; } | |||
.reveal em { | |||
font-style: italic; } | |||
.reveal ol, | |||
.reveal dl, | |||
.reveal ul { | |||
display: inline-block; | |||
text-align: left; | |||
margin: 0 0 0 1em; } | |||
.reveal ol { | |||
list-style-type: decimal; } | |||
.reveal ul { | |||
list-style-type: disc; } | |||
.reveal ul ul { | |||
list-style-type: square; } | |||
.reveal ul ul ul { | |||
list-style-type: circle; } | |||
.reveal ul ul, | |||
.reveal ul ol, | |||
.reveal ol ol, | |||
.reveal ol ul { | |||
display: block; | |||
margin-left: 40px; } | |||
.reveal dt { | |||
font-weight: bold; } | |||
.reveal dd { | |||
margin-left: 40px; } | |||
.reveal blockquote { | |||
display: block; | |||
position: relative; | |||
width: 70%; | |||
margin: 20px auto; | |||
padding: 5px; | |||
font-style: italic; | |||
background: rgba(255, 255, 255, 0.05); | |||
box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2); } | |||
.reveal blockquote p:first-child, | |||
.reveal blockquote p:last-child { | |||
display: inline-block; } | |||
.reveal q { | |||
font-style: italic; } | |||
.reveal pre { | |||
display: block; | |||
position: relative; | |||
width: 90%; | |||
margin: 20px auto; | |||
text-align: left; | |||
font-size: 0.55em; | |||
font-family: monospace; | |||
line-height: 1.2em; | |||
word-wrap: break-word; | |||
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); } | |||
.reveal code { | |||
font-family: monospace; | |||
text-transform: none; } | |||
.reveal pre code { | |||
display: block; | |||
padding: 5px; | |||
overflow: auto; | |||
max-height: 400px; | |||
word-wrap: normal; } | |||
.reveal table { | |||
margin: auto; | |||
border-collapse: collapse; | |||
border-spacing: 0; } | |||
.reveal table th { | |||
font-weight: bold; } | |||
.reveal table th, | |||
.reveal table td { | |||
text-align: left; | |||
padding: 0.2em 0.5em 0.2em 0.5em; | |||
border-bottom: 1px solid; } | |||
.reveal table th[align="center"], | |||
.reveal table td[align="center"] { | |||
text-align: center; } | |||
.reveal table th[align="right"], | |||
.reveal table td[align="right"] { | |||
text-align: right; } | |||
.reveal table tbody tr:last-child th, | |||
.reveal table tbody tr:last-child td { | |||
border-bottom: none; } | |||
.reveal sup { | |||
vertical-align: super; } | |||
.reveal sub { | |||
vertical-align: sub; } | |||
.reveal small { | |||
display: inline-block; | |||
font-size: 0.6em; | |||
line-height: 1.2em; | |||
vertical-align: top; } | |||
.reveal small * { | |||
vertical-align: top; } | |||
/********************************************* | |||
* LINKS | |||
*********************************************/ | |||
.reveal a { | |||
color: #a23; | |||
text-decoration: none; | |||
-webkit-transition: color .15s ease; | |||
-moz-transition: color .15s ease; | |||
transition: color .15s ease; } | |||
.reveal a:hover { | |||
color: #dd5566; | |||
text-shadow: none; | |||
border: none; } | |||
.reveal .roll span:after { | |||
color: #fff; | |||
background: #6a1520; } | |||
/********************************************* | |||
* IMAGES | |||
*********************************************/ | |||
.reveal section img { | |||
margin: 15px 0px; | |||
background: rgba(255, 255, 255, 0.12); | |||
border: 4px solid #eee; | |||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); } | |||
.reveal section img.plain { | |||
border: 0; | |||
box-shadow: none; } | |||
.reveal a img { | |||
-webkit-transition: all .15s linear; | |||
-moz-transition: all .15s linear; | |||
transition: all .15s linear; } | |||
.reveal a:hover img { | |||
background: rgba(255, 255, 255, 0.2); | |||
border-color: #a23; | |||
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); } | |||
/********************************************* | |||
* NAVIGATION CONTROLS | |||
*********************************************/ | |||
.reveal .controls { | |||
color: #a23; } | |||
/********************************************* | |||
* PROGRESS BAR | |||
*********************************************/ | |||
.reveal .progress { | |||
background: rgba(0, 0, 0, 0.2); | |||
color: #a23; } | |||
.reveal .progress span { | |||
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); | |||
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); | |||
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); } | |||
.reveal p { | |||
font-weight: 300; | |||
text-shadow: 1px 1px #222; } | |||
.reveal h1, | |||
.reveal h2, | |||
.reveal h3, | |||
.reveal h4, | |||
.reveal h5, | |||
.reveal h6 { | |||
font-weight: 700; } | |||
.reveal p code { | |||
background-color: #23241f; | |||
display: inline-block; | |||
border-radius: 7px; } | |||
.reveal small code { | |||
vertical-align: baseline; } |
@@ -0,0 +1,270 @@ | |||
/** | |||
* League theme for reveal.js. | |||
* | |||
* This was the default theme pre-3.0.0. | |||
* | |||
* Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se | |||
*/ | |||
@import url(../../lib/font/league-gothic/league-gothic.css); | |||
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); | |||
/********************************************* | |||
* GLOBAL STYLES | |||
*********************************************/ | |||
body { | |||
background: #1c1e20; | |||
background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); | |||
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20)); | |||
background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); | |||
background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); | |||
background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); | |||
background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); | |||
background-color: #2b2b2b; } | |||
.reveal { | |||
font-family: "Lato", sans-serif; | |||
font-size: 40px; | |||
font-weight: normal; | |||
color: #eee; } | |||