html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:root{color-scheme:light dark}body{font-family:var(--font-serif);line-height:1.5;color:var(--page-text);background-color:var(--page-background)}.inner{max-width:700px;margin:0 auto}a{color:var(--link-text)}hr{margin:30px auto;border:0;border-bottom:1px solid var(--rule-border)}:root{--font-sans:"Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-serif:"Merriweather", "Georgia", "Times New Roman", serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--white:#fafafa;--very-very-light-grey:#f2f1f6;--very-light-grey:#dddae4;--light-grey:#bdb6c4;--grey:#858293;--dark-grey:#524f64;--very-dark-grey:#25233a;--very-very-dark-grey:#12101f;--black:#0a001b;--blue:#0073c5;--bright-green:#00ce48;--brown:#9d632c;--burgundy:#7d0606;--dark-blue:#253e58;--forest-green:#199d5d;--grape-purple:#732582;--lime-green:#76be21;--maroon:#a61c70;--orange:#f47920;--pink:#e40091;--red:#f42020;--royal-purple:#3d21be;--teal:#00b69d;--yellow:#eba421;--very-light-green:#f3fce8;--very-dark-green:#0a1200;--very-light-red:#ffdede;--very-dark-red:#2b0000;--transparent-white-50:rgba(255, 255, 255, 50%);--page-text:var(--black);--page-background:var(--white);--link-text:var(--blue);--link-hover:var(--red);--muted-text:var(--grey);--navigation-link-text:var(--dark-grey);--header-footer-text:var(--white);--footer-link-text:var(--white);--subscribe-text:var(--black);--subscribe-background:var(--white);--subscribe-button-background:var(--forest-green);--subscribe-button-text:var(--white);--subscribe-button-hover:var(--blue);--subscribe-message-error-text:var(--burgundy);--subscribe-message-error-background:var(--very-light-red);--subscribe-message-success-text:var(--forest-green);--subscribe-message-success-background:var(--very-light-green);--view-on-web-text:var(--grey);--email-footer-text:var(--grey);--subheading-text:var(--grey);--attribution-text:var(--grey);--category-text:var(--white);--category-comment:var(--black);--category-sponsored:var(--orange);--category-article:var(--black);--category-news:var(--blue);--category-wwdc:var(--pink);--category-tools:var(--teal);--category-code:var(--grape-purple);--category-mac:var(--maroon);--category-design:var(--forest-green);--category-business:var(--lime-green);--category-speed:var(--dark-blue);--category-videos:var(--red);--category-books:var(--brown);--category-other:var(--light-grey);--category-jobs:var(--yellow);--category-sponsoredjobs:var(--yellow);--category-insiders:var(--bright-green);--category-finally:var(--royal-purple);--category-comment-links:var(--blue);--category-article-links:var(--blue);--blockquote-border:var(--very-light-grey);--rule-border:var(--very-light-grey);--sponsorship-calendar-available-border:var(--lime-green);--sponsorship-calendar-available-background:var(--very-light-green);--sponsorship-calendar-available-text:var(--lime-green);--sponsorship-calendar-booked-border:var(--very-light-grey);--sponsorship-calendar-booked-background:var(--very-very-light-grey);--sponsorship-calendar-booked-text:var(--grey);--transactional-button-background:var(--forest-green);--transactional-button-text:var(--white);--footer-text:var(--white)}@media (prefers-color-scheme:dark){:root{--blue:#2797e7;--brown:#a87647;--forest-green:#2aaf6f;--grape-purple:#b536cd;--maroon:#b52d81;--orange:#f48433;--pink:#f52aab;--red:#f05050;--royal-purple:#6646f2;--yellow:#f3a91e;--category-comment:var(--dark-grey);--category-article:var(--dark-grey);--page-text:var(--white);--page-background:var(--black);--navigation-link-text:var(--light-grey);--sponsorship-calendar-available-border:var(--forest-green);--sponsorship-calendar-available-background:var(--very-dark-green);--sponsorship-calendar-available-text:var(--forest-green);--sponsorship-calendar-booked-border:var(--very-dark-grey);--sponsorship-calendar-booked-background:var(--very-very-dark-grey);--sponsorship-calendar-booked-text:var(--grey)}}header{padding:20px;color:var(--header-footer-text)}header>.inner{display:flex;flex-direction:column;gap:15px}header .preamble{font-size:24px;line-height:1.35;text-align:center}header small{margin-bottom:20px;font-size:12px}footer{padding:20px 0;color:var(--header-footer-text)}footer>.inner{padding:0 30px}footer section{display:grid;grid-template-columns:5fr 2fr;gap:100px}@media (max-width:768px){footer section{grid-template-columns:1fr}}footer hr{width:10%}footer .links{display:flex;flex-direction:column;gap:30px;font-family:var(--font-sans);font-size:13px}footer .links a{text-decoration:none;text-transform:uppercase;color:var(--footer-link-text)}footer .links a:hover{color:var(--link-hover)}footer .links ul{margin:0;padding:0;list-style:none}footer .links .socials{display:flex;gap:10px}footer .links .socials img{width:30px;height:auto}footer .links .subscribe-with-rss a{display:inline-block;margin-left:5px;padding:3px 10px 3px 27px;font-size:14px;font-weight:700;text-decoration:none;color:var(--white);background-position:5px center;background-repeat:no-repeat;background-size:18px;background-color:var(--orange);background-image:url(/images/rss.svg);border-radius:6px}footer .copyright{display:block;text-align:center}.subscribe{display:flex;flex-direction:column;gap:12px;align-items:center}.subscribe .subscribe-form-container{display:flex;flex-direction:column;gap:20px;align-items:center}.subscribe form{display:flex;flex-direction:row;gap:10px;width:100%;max-width:500px;padding:10px;background-color:var(--subscribe-background);border-radius:10px}.subscribe form input,.subscribe form button{padding:10px;font-size:17px;border-radius:5px}.subscribe form input{flex-grow:1;width:100%;font-family:var(--font-serif);color:var(--subscribe-text);background-color:var(--subscribe-background);border:0}.subscribe form button{flex-shrink:0;padding:10px 20px;font-weight:700;color:var(--subscribe-button-text);background-color:var(--subscribe-button-background);border:0;border-radius:7px}.subscribe form button:hover{background-color:var(--subscribe-button-hover)}.subscribe form button:hover.loading{color:var(--subscribe-button-hover)}.subscribe form button.loading{position:relative;color:var(--subscribe-button-background)}.subscribe form button.loading:after{content:"";position:absolute;top:calc(50% - 12.5px);left:calc(50% - 12.5px);display:inline-block;width:25px;height:25px;border:5px solid var(--transparent-white-50);border-radius:50%;border-bottom-color:var(--white);box-sizing:border-box;animation:rotation 1s linear infinite}.subscribe .subscribe-message{position:relative;display:inline-block;margin-top:-8px;padding:8px 12px;font-size:13px;border-radius:4px}.subscribe .subscribe-message.error{color:var(--subscribe-message-error-text);background-color:var(--subscribe-message-error-background)}.subscribe .subscribe-message.error:before{border-bottom-color:var(--subscribe-message-error-background)}.subscribe .subscribe-message.success{color:var(--subscribe-message-success-text);background-color:var(--subscribe-message-success-background)}.subscribe .subscribe-message.success:before{border-bottom-color:var(--subscribe-message-success-background)}.subscribe .subscribe-message:empty{display:none}.subscribe .subscribe-message:before{content:"";position:absolute;top:-10px;left:50%;width:0;height:0;border-bottom:10px solid #fff;border-left:10px solid transparent;border-right:10px solid transparent;transform:translate(-50%)}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}a.home{display:flex;gap:8px;align-items:center;font-family:var(--font-serif);font-size:20px;font-weight:700;letter-spacing:-.4px;text-decoration:none;text-transform:none;color:var(--page-text)}a.home img{display:block}a.home span{transform:translateY(1px)}nav{font-family:var(--font-sans)}nav a{padding-left:18px;font-size:12px;letter-spacing:.4px;text-decoration:none;text-transform:uppercase;color:var(--navigation-link-text);background-position:left center;background-repeat:no-repeat;background-size:15px}nav a:hover{color:var(--link-hover)}nav a.latest{background-image:url(/images/calendar.svg)}nav a.archives{background-image:url(/images/inventory.svg)}nav a.sponsorship{background-image:url(/images/badge.svg)}nav a.submit-a-link{background-image:url(/images/mail.svg)}nav a.search{background-image:url(/images/search.svg)}.desktop>nav>.inner{display:flex;gap:20px;align-items:center;justify-content:space-between;max-width:950px;padding:20px}.desktop>nav>.inner a:first-child{margin-right:auto}.mobile{display:none}@media (max-width:768px){.mobile{display:block}.mobile .menu-open button,.mobile .menu-close button{appearance:none;cursor:pointer;background:0 0;border:0}.mobile .menu-open{display:flex;align-items:center;justify-content:space-between;padding:10px}.mobile .menu-close{position:fixed;top:10px;right:10px;z-index:1001;transition:opacity .3s ease-in-out,visibility .3s ease-in-out}.mobile nav{position:fixed;inset:0;z-index:1000;background:var(--page-background);transition:opacity .3s ease-in-out,visibility .3s ease-in-out}.mobile nav>.inner{display:flex;flex-direction:column;gap:20px;padding:20px}.mobile nav>.inner a:first-child{display:none}.mobile:not(.open) .menu-close,.mobile:not(.open) nav{visibility:hidden;opacity:0}.desktop{display:none}}header,footer{position:relative}header .clouds,footer .clouds{position:absolute;inset:0;z-index:-1;overflow:hidden;background-color:var(--grape-purple);clip-path:inset(0)}header .blur,footer .blur{position:absolute;inset:-50px;overflow:hidden;filter:blur(70px)}header .blur:before,header .blur:after,footer .blur:before,footer .blur:after{content:"";position:absolute;inset:0;background-position:center;background-size:cover;transform-origin:center;will-change:transform}header .blur:before,footer .blur:before{background-image:url(/images/background-layer-1~light.svg);animation:clouds-layer-1 16s infinite ease-in-out}@media (prefers-color-scheme:dark){header .blur:before,footer .blur:before{background-image:url(/images/background-layer-1~dark.svg)}}header .blur:after,footer .blur:after{background-image:url(/images/background-layer-2~light.svg);animation:clouds-layer-2 16s infinite ease-in-out}@media (prefers-color-scheme:dark){header .blur:after,footer .blur:after{background-image:url(/images/background-layer-2~dark.svg)}}@keyframes clouds-layer-1{0%,to{transform:translate(-50%) scaleX(2)}50%{transform:translate(50%) scaleX(2)}}@keyframes clouds-layer-2{0%,to{transform:translate(50%) scaleX(2)}50%{transform:translate(-50%) scaleX(2)}}article{padding:50px 20px;font-size:17px}article p{margin-top:5px}article .attribution{font-size:14px;font-style:italic;color:var(--attribution-text)}article .link-attribution{margin-top:-5px;font-size:14px;font-style:italic;text-align:right;color:var(--attribution-text)}article table.issue-header,article section.issue-header{padding:20px 0}article table.issue-header img,article section.issue-header img{width:65px;height:auto}article table.issue-header h1,article table.issue-header p,article section.issue-header h1,article section.issue-header p{margin:0}article table.issue-header h1,article section.issue-header h1{margin-bottom:0;font-size:20px;text-transform:uppercase}article table.issue-header p,article section.issue-header p{font-size:13px;color:var(--subheading-text)}article section.issue-header{display:flex;gap:15px;align-items:center}article table.issue-header td:first-of-type{padding-right:15px}article h2.category{width:fit-content;margin:30px 0}article h2.category,article table[role=heading][aria-level="2"] td{padding:2px 10px;font-family:var(--font-sans);font-size:14px;text-transform:uppercase;color:var(--category-text);border-radius:5px}article h2.category.comment,article table[role=heading][aria-level="2"] td.comment{background-color:var(--category-comment)}article h2.category.sponsored,article table[role=heading][aria-level="2"] td.sponsored{background-color:var(--category-sponsored)}article h2.category.article,article table[role=heading][aria-level="2"] td.article{background-color:var(--category-article)}article h2.category.news,article table[role=heading][aria-level="2"] td.news{background-color:var(--category-news)}article h2.category.wwdc,article table[role=heading][aria-level="2"] td.wwdc{background-color:var(--category-wwdc)}article h2.category.tools,article table[role=heading][aria-level="2"] td.tools{background-color:var(--category-tools)}article h2.category.code,article table[role=heading][aria-level="2"] td.code{background-color:var(--category-code)}article h2.category.mac,article table[role=heading][aria-level="2"] td.mac{background-color:var(--category-mac)}article h2.category.design,article table[role=heading][aria-level="2"] td.design{background-color:var(--category-design)}article h2.category.business,article table[role=heading][aria-level="2"] td.business{background-color:var(--category-business)}article h2.category.speed,article table[role=heading][aria-level="2"] td.speed{background-color:var(--category-speed)}article h2.category.videos,article table[role=heading][aria-level="2"] td.videos{background-color:var(--category-videos)}article h2.category.books,article table[role=heading][aria-level="2"] td.books{background-color:var(--category-books)}article h2.category.other,article table[role=heading][aria-level="2"] td.other{background-color:var(--category-other)}article h2.category.jobs,article table[role=heading][aria-level="2"] td.jobs{background-color:var(--category-jobs)}article h2.category.sponsoredjobs,article table[role=heading][aria-level="2"] td.sponsoredjobs{background-color:var(--category-sponsoredjobs)}article h2.category.insiders,article table[role=heading][aria-level="2"] td.insiders{background-color:var(--category-insiders)}article h2.category.finally,article table[role=heading][aria-level="2"] td.finally{background-color:var(--category-finally)}article .comment a,article a.comment{color:var(--category-comment-links)}article .sponsored a,article a.sponsored{color:var(--category-sponsored)}article .article a,article a.article{color:var(--category-article-links)}article .news a,article a.news{color:var(--category-news)}article .wwdc a,article a.wwdc{color:var(--category-wwdc)}article .tools a,article a.tools{color:var(--category-tools)}article .code a,article a.code{color:var(--category-code)}article .mac a,article a.mac{color:var(--category-mac)}article .design a,article a.design{color:var(--category-design)}article .business a,article a.business{color:var(--category-business)}article .speed a,article a.speed{color:var(--category-speed)}article .videos a,article a.videos{color:var(--category-videos)}article .books a,article a.books{color:var(--category-books)}article .other a,article a.other{color:var(--category-other)}article .jobs a,article a.jobs{color:var(--category-jobs)}article .sponsoredjobs a,article a.sponsoredjobs{color:var(--category-sponsoredjobs)}article .insiders a,article a.insiders{color:var(--category-insiders)}article .finally a,article a.finally{color:var(--category-finally)}article .link{font-size:18px;font-weight:700;text-decoration:none}article .link:hover{text-decoration:underline}article hr{width:10%;margin:30px auto;border:0;border-bottom:1px solid var(--rule-border)}article blockquote{margin:10px 20px;border-left:3px solid var(--blockquote-border)}article blockquote p{padding:5px 10px}article .footnotes{font-size:14px}article .footnotes p{margin:7px}ul.archives{display:grid;grid-template-columns:1fr 1fr;gap:30px;padding:0;list-style:none}ul.archives li>a{display:grid;grid-template-columns:1fr 1fr;align-items:center;text-decoration:none}ul.archives li>a h2{margin:0;font-size:19px}ul.archives li>a .date{font-size:12px;font-weight:400;text-align:right;color:var(--subheading-text)}ul.archives li>a .summary{grid-column:span 2;color:var(--page-text)}ul.archives li>a .summary.missing{color:var(--subheading-text)}@media (max-width:768px){ul.archives{grid-template-columns:1fr}}article.sponsorship .inner{max-width:750px}article.sponsorship .preamble{margin-bottom:40px;font-size:20px;font-weight:700;text-align:center}article.sponsorship small{display:inline-block;font-size:12px;line-height:1.2;color:var(--muted-text)}article.sponsorship ul.calendar{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:30px 0;padding:0;list-style:none}article.sponsorship ul.calendar li{display:flex;flex-direction:column;gap:7px;align-items:flex-start;text-align:center;border-radius:3px}article.sponsorship ul.calendar li h3{margin:0}article.sponsorship ul.calendar li span.year{font-weight:400}@media (max-width:768px){article.sponsorship ul.calendar{grid-template-columns:1fr}}article.sponsorship ul.month,article.sponsorship div.month{display:flex;flex-direction:row;gap:10px;width:100%;padding:0}article.sponsorship ul.month li,article.sponsorship ul.month.sold-out,article.sponsorship div.month li,article.sponsorship div.month.sold-out{display:flex;flex-grow:1;align-items:center;justify-content:center;padding:5px 0;border-radius:3px}article.sponsorship ul.month li.available,article.sponsorship div.month li.available{color:var(--sponsorship-calendar-available-text);background-color:var(--sponsorship-calendar-available-background);border:1px solid var(--sponsorship-calendar-available-border)}article.sponsorship ul.month li.booked,article.sponsorship div.month li.booked{color:var(--sponsorship-calendar-booked-text);background-color:var(--sponsorship-calendar-booked-background);border:1px solid var(--sponsorship-calendar-booked-border)}article.sponsorship ul.month.sold-out,article.sponsorship div.month.sold-out{color:var(--sponsorship-calendar-booked-text);background-color:var(--sponsorship-calendar-booked-background);border:1px solid var(--sponsorship-calendar-booked-border)}article.sponsorship ul.month.sold-out p,article.sponsorship div.month.sold-out p{font-weight:500}article.sponsorship ul.month p,article.sponsorship div.month p{margin:0}article.sponsorship .logos{position:relative;overflow:hidden;width:100%;padding:0}article.sponsorship .logos .gradient{position:absolute;top:0;z-index:10;width:30px;height:100%}article.sponsorship .logos .gradient.left{left:0;background:linear-gradient(to right,var(--page-background),transparent)}article.sponsorship .logos .gradient.right{right:0;background:linear-gradient(to left,var(--page-background),transparent)}article.sponsorship .logos .row{position:relative;display:flex;align-items:center;margin:0}article.sponsorship .logos .scroll{display:flex;min-width:max-content;animation:scroll var(--scroll-duration) linear infinite}article.sponsorship .logos .logo{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:150px;height:100px;margin:0 20px}article.sponsorship .logos .logo img{max-width:100%;max-height:100%;object-fit:contain}@keyframes scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}