/* the Anvil desktop: the homepage is a small operating system. Built from the comp in refs/desktop-comp. */
:root{--amber:#f0a020;--amber-bright:#ffb83a;--amber-deep:#7a4a12;--char:#141414;--cut:9px;--cutc:16px;--cp:polygon(0 0,calc(100% - var(--cutc)) 0,100% var(--cutc),100% 100%,var(--cutc) 100%,0 calc(100% - var(--cutc)))}
*{box-sizing:border-box}html,body{margin:0;height:100%;background:#09090b;color:#eee;font-family:'DM Sans',system-ui,sans-serif;overflow:hidden}
canvas{position:fixed;inset:0;width:100vw;height:100vh;display:block}
.menu{position:fixed;top:0;left:0;right:0;height:30px;display:flex;align-items:center;gap:22px;padding:0 14px;background:rgba(12,11,10,.55);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid rgba(255,255,255,.06);font-size:13px;z-index:900}
.menu .mark{display:flex;align-items:center}.menu b{font-weight:500}.menu a{color:#b9b2a8;text-decoration:none}.menu a:hover{color:#fff}.menu .sp{flex:1}.menu #wifi{margin-left:2px}#flag{font-size:16px;line-height:1;margin-right:-8px}#clock{color:#d6d2ca;font-size:13px;white-space:nowrap;font-variant-numeric:tabular-nums}@media (max-width:760px){#clock .d{display:none}}
.word{position:fixed;left:50%;top:50%;transform:translate(-50%,-56%);text-align:center;pointer-events:none;z-index:1}
.t{position:relative;display:inline-block;font-family:'Bebas Neue',sans-serif;font-size:min(22vw,200px);line-height:.9;color:#f3f3f5}
.t::before{content:attr(data-t);position:absolute;left:-.035em;top:-.035em;color:var(--amber-deep);opacity:.65;z-index:-1}
.sub{display:flex;justify-content:space-between;margin-top:.5em;font-size:min(3.2vw,26px);color:#9a948b;font-weight:300}
.tag{margin-top:26px;font-size:min(3.4vw,16px);color:#a39d94}
/* desktop icons */
.icons{position:fixed;top:44px;right:14px;bottom:110px;display:flex;flex-flow:column wrap-reverse;align-content:flex-start;gap:4px 4px;z-index:3;pointer-events:none}
.ico{all:unset;pointer-events:auto;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:5px;width:84px;padding:6px 4px 4px;border-radius:10px}
.tile{width:52px;height:52px;border-radius:12px;background:linear-gradient(#2a2826,#141414);box-shadow:0 1px 0 rgba(255,255,255,.08) inset,0 8px 20px rgba(0,0,0,.5);display:grid;place-items:center;transition:transform .15s}
.tile svg{width:84%;height:84%}.ico:hover .tile{transform:translateY(-2px)}
.lab{font-size:12px;font-weight:500;color:#f1ece4;text-shadow:0 1px 3px rgba(0,0,0,.9);padding:1px 7px;border-radius:5px;text-align:center;line-height:1.2}
.ico.sel{background:rgba(240,160,32,.14)}.ico.sel .lab{background:var(--amber);color:#1a1206;text-shadow:none}
.ico:focus-visible,.dk:focus-visible{outline:2px solid var(--amber-bright);outline-offset:2px}
/* windows */
.win{position:fixed;display:none;filter:drop-shadow(0 18px 40px rgba(0,0,0,.6))}
.win.on{display:block;animation:pop .16s ease-out}@keyframes pop{from{opacity:0;transform:translateY(6px) scale(.98)}}
.win::before{content:"";position:absolute;inset:0;transform:translate(-5px,-5px);background:var(--amber-deep);opacity:.65;clip-path:var(--cp)}
.slab{position:relative;background:#171514;clip-path:var(--cp);height:100%;display:flex;flex-direction:column}
.bar{display:flex;align-items:center;gap:10px;padding:9px 14px;cursor:grab;background:rgba(255,255,255,.04);border-bottom:1px solid rgba(255,255,255,.06);font-size:12px;color:#8d867c;user-select:none;touch-action:none}
.bar:active{cursor:grabbing}.bar span{flex:1;text-align:center}.bar i{width:18px}
.x{all:unset;cursor:pointer;color:#8d867c;font-size:18px;line-height:1;width:18px;text-align:center}.x:hover{color:#fff}
.body{padding:16px 18px 18px;flex:1;min-height:0}
.hd{display:flex;align-items:center;gap:12px;margin-bottom:10px}.hd .tile{width:48px;height:48px;border-radius:11px;box-shadow:none}
.hd h2{margin:0;font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:28px;letter-spacing:.02em}
.body p{margin:0 0 16px;font-size:13.5px;line-height:1.5;color:#b5aea4}
.go{display:inline-block;background:var(--amber);color:#1a1206;font-weight:500;font-size:13.5px;text-decoration:none;padding:9px 18px;clip-path:polygon(0 0,calc(100% - var(--cut)) 0,100% var(--cut),100% 100%,var(--cut) 100%,0 calc(100% - var(--cut)))}.go:hover{background:var(--amber-bright)}
#w-info{width:320px;right:140px;top:70px}
/* finder */
#w-fin{width:520px;height:300px;left:calc(50% - 330px);top:110px}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px 4px}.grid .ico{width:auto}
/* photos */
#w-pho{width:760px;height:262px;left:calc(50% - 380px);top:80px}
.pg{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.pg button{all:unset;cursor:pointer;display:block;aspect-ratio:4/3;background-size:cover;background-position:center;border-radius:6px;outline-offset:2px;position:relative;overflow:hidden;box-shadow:0 4px 14px rgba(0,0,0,.5)}
.pg button:hover{box-shadow:0 0 0 2px var(--amber)}.pg button:focus-visible{outline:2px solid var(--amber-bright)}
.pg em{position:absolute;left:0;right:0;bottom:0;padding:18px 10px 7px;font-style:normal;font-size:11.5px;color:#eee;background:linear-gradient(transparent,rgba(0,0,0,.75))}
.viewer{display:none;height:100%;flex-direction:column;gap:10px}.viewer.on{display:flex}.viewer .img{flex:1;min-height:0;background-size:contain;background-position:center;background-repeat:no-repeat;border-radius:6px}
.viewer .row{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;color:#a39d94}.row button{all:unset;cursor:pointer;color:var(--amber);font-size:13px}
/* browser */
#w-brw{width:880px;height:600px;left:calc(50% - 440px);top:64px}
.tb{display:flex;align-items:center;gap:10px;padding:8px 12px;background:rgba(255,255,255,.03);border-bottom:1px solid rgba(255,255,255,.06)}
.tb .addr{flex:1;max-width:520px;margin:0 auto;text-align:center;font-size:12.5px;color:#cfc8bd;background:rgba(255,255,255,.07);border-radius:8px;padding:6px 10px}
.frame{flex:1;min-height:0;border:0;width:100%;background:#0b0a0a;display:block}
/* dock */
.dock{--b:62px;position:fixed;left:50%;bottom:10px;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 12px);display:flex;align-items:flex-end;gap:12px;padding:10px 14px;border-radius:24px;background:rgba(30,27,24,.5);backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2);border:1px solid rgba(255,255,255,.1);box-shadow:0 12px 40px rgba(0,0,0,.55),0 1px 0 rgba(255,255,255,.08) inset;z-index:950}
.dk{all:unset;flex:none;cursor:pointer;position:relative;display:block;width:var(--s,var(--b));height:var(--b);transition:width .09s ease-out}
.dk .tile{position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:var(--s,var(--b));height:var(--s,var(--b));box-shadow:0 4px 10px rgba(0,0,0,.45);transition:width .09s ease-out,height .09s ease-out}
.dk .tip{position:absolute;bottom:calc(var(--s,var(--b)) + 14px);left:50%;transform:translateX(-50%);white-space:nowrap;font-size:12px;padding:4px 10px;border-radius:7px;background:rgba(20,18,16,.92);border:1px solid rgba(255,255,255,.1);opacity:0;pointer-events:none;transition:opacity .12s}
.dk:hover .tip,.dk:focus-visible .tip{opacity:1}
.dk.on::after{content:"";position:absolute;bottom:-6px;width:4px;height:4px;border-radius:50%;background:#d8d2c8}
.dk.bounce .tile{animation:bnc .5s ease-in-out 2}@keyframes bnc{50%{transform:translateX(-50%) translateY(-18px)}}
.sep[hidden]{display:none}.sep{width:1px;align-self:stretch;margin:4px 2px;background:rgba(255,255,255,.14)}
.credit{position:fixed;left:16px;bottom:12px;font-size:11px;color:#6d675f;letter-spacing:.04em;z-index:2}
@media (max-width:760px){
 .icons{top:auto;left:0;right:0;bottom:92px;flex-flow:row nowrap;justify-content:center;gap:0;padding:0 2px}.ico{width:19vw;max-width:90px}.tile{width:52px;height:52px}
 .dock{gap:4px;padding:6px 8px;bottom:8px}.dock{--b:46px}.credit{display:none}.word{transform:translate(-50%,-110%)}.pg{grid-template-columns:1fr 1fr}.grid{grid-template-columns:repeat(2,1fr)}}

.win.mac::before{display:none}
.win.mac{filter:drop-shadow(0 22px 50px rgba(0,0,0,.65))}
.mwin{border-radius:12px;overflow:hidden;background:#1e1e20;box-shadow:0 0 0 1px rgba(255,255,255,.14);height:100%;display:flex;flex-direction:column}
.mbar{display:flex;align-items:center;gap:14px;padding:0 14px;height:46px;background:#2a2a2d;border-bottom:1px solid rgba(0,0,0,.5);cursor:grab;user-select:none;touch-action:none;flex:none}
.mbar:active{cursor:grabbing}
.lights{display:flex;gap:8px}.lt{all:unset;width:12px;height:12px;border-radius:50%;cursor:pointer;box-shadow:inset 0 0 0 .5px rgba(0,0,0,.35)}
.lt.r{background:#ff5f57}.lt.y{background:#febc2e}.lt.g{background:#28c840}.lights:hover .lt.r::after{content:"\00d7"}.lights:hover .lt.y::after{content:"\2212"}.lights:hover .lt.g::after{content:"+"}.lt::after{display:block;text-align:center;font:700 10px/12px system-ui;color:rgba(0,0,0,.55)}
.mt{flex:1;text-align:center;font-size:13px;font-weight:500;color:#d6d6d8;margin-right:50px}
.arrows{display:flex;gap:2px;width:50px}.arrows button{all:unset;cursor:pointer;width:24px;height:24px;text-align:center;font-size:24px;line-height:20px;color:#b4b4b8;border-radius:6px}.arrows button:hover{background:rgba(255,255,255,.1)}.sp2{width:50px}
.pill{flex:1;max-width:460px;margin:0 auto;text-align:center;font-size:13px;color:#e4e4e6;background:#3a3a3d;border-radius:8px;padding:6px 10px}
#w-brw{width:min(1240px,calc(100vw - 40px));height:min(800px,calc(100vh - 120px));left:max(20px,calc(50vw - 620px));top:46px}
.mwin .frame{background:#0b0a0a}
#w-pho{width:min(1000px,calc(100vw - 40px));height:min(700px,calc(100dvh - 130px));left:max(20px,calc(50vw - 500px));top:46px}
.pbody{display:flex;flex:1;min-height:0}
.side{width:170px;background:#252527;padding:14px 10px;display:flex;flex-direction:column;gap:2px;font-size:13px;color:#c9c9cc;border-right:1px solid rgba(0,0,0,.45)}
.side b{font-size:11px;font-weight:600;color:#8a8a8f;padding:2px 8px 8px;letter-spacing:.02em}
.side a{padding:6px 10px;border-radius:7px;cursor:default}.side a.on{background:rgba(255,255,255,.1);color:#fff}
.main{flex:1;min-width:0;padding:0;background:#161617;overflow:auto}
.main .pg{display:grid;grid-template-columns:repeat(2,1fr);gap:2px}
.main .pg button{aspect-ratio:4/3;border-radius:0;box-shadow:none}.main .pg button:hover{box-shadow:none;filter:brightness(1.12)}.main .pg em{display:none}
.main .viewer{padding:14px;height:100%}.main .viewer .img{background-color:#0d0d0e;border-radius:6px}
.main .row button{color:#0a84ff}
.tile.plain{background:none;box-shadow:0 4px 10px rgba(0,0,0,.45);border-radius:14px;overflow:hidden}.tile.plain svg{width:100%;height:100%}
@media (max-width:760px){.side{display:none}}

.win.anim{transition:transform .38s cubic-bezier(.4,0,.2,1),opacity .3s,left .28s,top .28s,width .28s,height .28s}
.win.mini{transform:translate(var(--mx,0),var(--my,0)) scale(.06)!important;opacity:0;pointer-events:none}
.win.max .mwin{border-radius:0}

#w-fin{width:min(720px,calc(100vw - 40px));height:min(460px,calc(100dvh - 150px));left:max(20px,calc(50vw - 360px));top:90px}
.fnav{display:flex;gap:2px}.fnav button{all:unset;cursor:pointer;width:26px;height:24px;text-align:center;font-size:24px;line-height:20px;color:#c9c9cc;border-radius:6px}.fnav button:hover:not(:disabled){background:rgba(255,255,255,.1)}.fnav button:disabled{color:#5a5a5e;cursor:default}
.ft{font-size:13px;font-weight:600;color:#e4e4e6;margin-left:6px}
.fmain{flex:1;min-width:0;display:flex;flex-direction:column;background:#1b1b1d}
.fgrid{flex:1;overflow:auto;padding:18px 16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));grid-auto-rows:min-content;gap:10px 6px;align-content:start}
.fi{all:unset;cursor:default;display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 4px 6px;border-radius:8px}
.fi .tile{width:60px;height:60px}.fi .tile.plain{box-shadow:none;background:none}
.fi span.l{font-size:12px;color:#e4e4e6;text-align:center;line-height:1.25;padding:1px 6px;border-radius:5px}
.fi.sel{background:rgba(255,255,255,.1)}.fi.sel span.l{background:#0a60d0;color:#fff}
.fi:focus-visible{outline:2px solid #0a84ff}
.fstat{display:flex;justify-content:space-between;padding:6px 14px;font-size:11.5px;color:#8f8f94;border-top:1px solid rgba(0,0,0,.5);background:#242427}
.side a{cursor:pointer}
.dk.mw .tile{overflow:visible;box-shadow:0 4px 10px rgba(0,0,0,.45)}.dk.mw .mwt{background:none}.dk.mw .badge{position:absolute;right:-5px;bottom:-5px;width:44%;height:44%;border-radius:22%;overflow:hidden;box-shadow:0 2px 6px rgba(0,0,0,.5)}.dk.mw .badge svg{width:100%;height:100%}.dk.mw{transition:width .09s ease-out,opacity .25s}
.pg button{position:relative}.heart{position:absolute;top:8px;right:8px;width:30px;height:30px;border-radius:50%;background:rgba(0,0,0,.5);display:grid;place-items:center;color:#fff;font-size:16px;line-height:1;opacity:0;transition:opacity .12s;cursor:pointer}.pg button:hover .heart,.heart.on,.pg button:focus-visible .heart{opacity:1}.heart.on{color:#ff453a}
.pg .none{grid-column:1/-1;padding:60px 20px;text-align:center;font-size:13px;color:#8f8f94}
.main .row #pf{color:#ff453a;font-size:20px;line-height:1}.main .row #pc{flex:1;text-align:center}
#w-doc{width:min(680px,calc(100vw - 40px));height:min(700px,calc(100dvh - 130px));left:max(20px,calc(50vw - 340px));top:52px}
.docscroll{flex:1;overflow:auto;background:#3a3a3d;padding:26px 20px}
.paper{max-width:600px;margin:0 auto;background:#f7f3ea;color:#2a2622;padding:54px 58px 48px;border-radius:3px;box-shadow:0 8px 30px rgba(0,0,0,.45);font-size:15px;line-height:1.6}
.paper h1{font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:54px;line-height:.95;margin:0 0 6px;color:#1d1a17;letter-spacing:.01em}
.paper .dek{margin:0 0 22px;color:#7a4a12;font-size:15.5px}
.paper h2{font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:28px;line-height:1;margin:30px 0 6px;color:#1d1a17;letter-spacing:.02em;border-top:2px solid #f0a020;padding-top:12px}
.paper p{margin:0 0 10px}.paper .open{margin:0 0 4px}
.paper a{color:#7a4a12;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.paper a:hover{color:#b8710f}
.paper .foot{margin-top:26px;font-size:12.5px;color:#7d756a}.paper .foot+.foot{margin-top:4px}
@media (max-width:760px){.paper{padding:34px 24px}.paper h1{font-size:44px}}

.hind{display:none}
@media (max-width:760px){
 .menu,.credit{display:none}
 .icons{position:fixed;top:calc(26px + env(safe-area-inset-top,0px));left:0;right:0;bottom:auto;display:grid;grid-template-columns:repeat(4,1fr);gap:20px 0;padding:0 6px;pointer-events:none}
 .icons .ico{width:auto;max-width:none;pointer-events:auto;padding:0;border-radius:0}.icons .ico.hd{display:none}
 .icons .tile{width:62px;height:62px;border-radius:15px}.icons .lab{font-size:11.5px;background:none!important;color:#fff!important;padding:0}
 .ico.sel{background:none}
 .word{transform:translate(-50%,-22%)}
 .dock{--b:60px;left:10px;right:10px;bottom:34px;transform:none;width:auto;max-width:none;justify-content:space-around;gap:0;padding:12px 14px;border-radius:26px}
 .dock a.dk,.dock .sep{display:none!important}.dk .tile{border-radius:14px}.dk .tip{display:none}
 .hind{display:block;position:fixed;bottom:6px;left:50%;transform:translateX(-50%);width:200px;height:48px;background:none;border:0;padding:0;z-index:970;cursor:pointer}
 .hind::after{content:"";position:absolute;left:30px;right:30px;top:30px;height:5px;border-radius:3px;background:rgba(255,255,255,.88)}
 .win{left:0!important;right:0!important;top:0!important;bottom:0!important;width:auto!important;height:auto!important;max-height:none!important;filter:none!important;transform:none!important}
 .win.mac .mwin{border-radius:0;box-shadow:none}.lights{display:none}.mbar{justify-content:center;height:44px;cursor:default}.mt{margin:0}.mbar .arrows.sp2{display:none}
 #w-brw .arrows{width:auto}.paper{padding:30px 22px 90px}.pg{grid-template-columns:1fr 1fr}.side{display:none}
 .win.mini{display:none}
}

/* which device is this: phone, Duo (open foldable), iPad or a computer. The phone rules above are keyed on width; these two on data-os. */
.hinge{display:none}
html[data-os="ipad"] .menu,html[data-os="ipad"] .credit,html[data-os="duo"] .menu,html[data-os="duo"] .credit{display:none}
html[data-os="ipad"] .hind,html[data-os="duo"] .hind{display:block;position:fixed;bottom:6px;left:50%;transform:translateX(-50%);width:200px;height:48px;background:none;border:0;padding:0;z-index:970;cursor:pointer}
html[data-os="ipad"] .hind::after,html[data-os="duo"] .hind::after{content:"";position:absolute;left:30px;right:30px;top:30px;height:5px;border-radius:3px;background:rgba(255,255,255,.88)}
/* iPad: icons laid out from the top left, a floating dock, app windows as rounded cards */
html[data-os="ipad"] .icons{position:fixed;top:calc(34px + env(safe-area-inset-top,0px));left:44px;right:44px;bottom:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:30px 8px;pointer-events:none}
html[data-os="ipad"] .icons .ico{width:auto;padding:0;border-radius:0;pointer-events:auto}html[data-os="ipad"] .icons .ico.hd{display:none}
html[data-os="ipad"] .icons .tile{width:72px;height:72px;border-radius:17.5px}
html[data-os="ipad"] .icons .lab{font-size:12.5px;background:none!important;color:#fff!important;padding:0}
html[data-os="ipad"] .ico.sel{background:none}
html[data-os="ipad"] .word{transform:translate(-50%,-6%)}
html[data-os="ipad"] .dock{--b:66px;bottom:34px;border-radius:27px;padding:12px 16px;gap:14px}
/* Duo: two screens either side of a hinge. Home screen on the left; the app you open takes the right. */
html[data-os="duo"] .hinge{display:block;position:fixed;top:0;bottom:0;left:50%;width:16px;transform:translateX(-50%);background:linear-gradient(90deg,rgba(0,0,0,0),rgba(0,0,0,.7) 42%,rgba(0,0,0,.7) 58%,rgba(0,0,0,0));z-index:955;pointer-events:none}
html[data-os="duo"] .icons{position:fixed;top:calc(26px + env(safe-area-inset-top,0px));left:0;right:50%;bottom:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:18px 0;padding:0 8px;pointer-events:none}
html[data-os="duo"] .icons .ico{width:auto;max-width:none;padding:0;border-radius:0;pointer-events:auto}html[data-os="duo"] .icons .ico.hd{display:none}
html[data-os="duo"] .icons .tile{width:60px;height:60px;border-radius:15px}
html[data-os="duo"] .icons .lab{font-size:11.5px;background:none!important;color:#fff!important;padding:0}
html[data-os="duo"] .ico.sel{background:none}
html[data-os="duo"] .word{left:75%;transform:translate(-50%,-50%)}html[data-os="duo"] .t{font-size:128px}html[data-os="duo"] .sub{font-size:17px}html[data-os="duo"] .tag{font-size:13px}
html[data-os="duo"] .dock{--b:56px;left:10px;right:calc(50% + 10px);bottom:34px;transform:none;width:auto;max-width:none;justify-content:space-around;gap:0;padding:10px 12px;border-radius:23px}
html[data-os="duo"] .dock a.dk,html[data-os="duo"] .dock .sep{display:none!important}html[data-os="duo"] .dk .tip{display:none}html[data-os="duo"] .dk .tile{border-radius:13px}
html[data-os="duo"] .hind{left:75%}
.apple{all:unset;cursor:pointer;display:grid;place-items:center;width:34px;height:24px;margin-left:-6px;border-radius:5px;color:#fff}.apple:hover,.apple[aria-expanded="true"]{background:rgba(255,255,255,.14)}
.menu .mark{margin-left:-8px}
.amenu{position:fixed;top:32px;left:8px;min-width:230px;padding:5px;border-radius:10px;background:rgba(34,31,28,.82);backdrop-filter:blur(22px) saturate(1.3);-webkit-backdrop-filter:blur(22px) saturate(1.3);border:1px solid rgba(255,255,255,.12);box-shadow:0 14px 40px rgba(0,0,0,.55);z-index:920;font-size:13.5px}
.amenu[hidden]{display:none}
.amenu button{all:unset;box-sizing:border-box;display:block;width:100%;padding:5px 12px;border-radius:5px;color:#eee;cursor:default}
.amenu button:hover,.amenu button:focus-visible{background:#f0a020;color:#1a1206}
.amenu hr{border:0;height:1px;background:rgba(255,255,255,.14);margin:5px 8px}
#w-about{width:320px;left:calc(50% - 160px);top:130px}
.about{padding:30px 26px 28px;text-align:center;background:#232225}
.about .alogo{width:104px;height:86px;margin:0 auto 14px;filter:drop-shadow(0 0 16px rgba(240,160,32,.25))}
.about h2{font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:34px;line-height:1;margin:0 0 6px;letter-spacing:.02em;color:#f3f3f5}
.about .adek{margin:0 0 20px;font-size:13px;color:#a9a39a;line-height:1.4}
.about dl{margin:0;display:grid;grid-template-columns:auto auto;gap:6px 14px;justify-content:center;font-size:12.5px;text-align:left}
.about dt{color:#8d867c;text-align:right}.about dd{margin:0;color:#e6dfd3}.about dd a{color:#f0a020;text-decoration:none}.about dd a:hover{text-decoration:underline}
.main .viewer video{flex:1;min-height:0;width:100%;background:#0d0d0e;border-radius:6px;object-fit:contain}.main .viewer video[hidden]{display:none}
.vbadge{position:absolute;left:8px;bottom:8px;display:flex;align-items:center;gap:6px;padding:3px 9px 3px 7px;border-radius:12px;background:rgba(0,0,0,.55);color:#fff;font-size:11.5px;font-weight:600;font-style:normal}.vbadge::before{content:"";border-left:7px solid #fff;border-top:4.5px solid transparent;border-bottom:4.5px solid transparent}
.mwin.pw{flex-direction:row;background:#1c1d20;border-radius:24px}
.ps{width:212px;flex:none;background:#26272b;display:flex;flex-direction:column;padding:0 10px 12px;overflow:auto;border-right:1px solid rgba(0,0,0,.4)}
.ps .lights{padding:20px 9px 16px;flex:none}
.psl{display:flex;flex-direction:column;gap:1px}
.psl a{display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:9px;font-size:13.5px;color:#ececee;cursor:default}
.psl a:hover{background:rgba(255,255,255,.06)}.psl a.on{background:rgba(255,255,255,.13)}
.psl h3{margin:16px 10px 4px;font-size:11.5px;font-weight:600;color:#8e8e94}
.pw.collapsed .ps{display:none}
.pcol{flex:1;min-width:0;display:flex;flex-direction:column}
.ptb{height:58px;flex:none;display:flex;align-items:center;gap:10px;padding:0 16px;position:relative;cursor:grab;touch-action:none;user-select:none}
.tbb{all:unset;width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.1);display:grid;place-items:center;cursor:pointer;color:#e6e6e9;flex:none}
.tbb:hover{background:rgba(255,255,255,.16)}.tbb[hidden]{display:none}
.tbb#pf{margin-left:auto;color:#e6e6e9}.tbb#pf[aria-pressed="true"]{color:#ff453a}
.zpill{display:flex;align-items:center;gap:8px;height:34px;padding:0 13px;border-radius:17px;background:rgba(255,255,255,.1);color:#9a9aa0;font-size:15px;line-height:1}.zpill[hidden]{display:none}
.zpill input{width:88px;accent-color:#d8d8dc;height:4px}
.ptt{position:absolute;left:50%;top:0;bottom:0;transform:translateX(-50%);display:flex;flex-direction:column;justify-content:center;text-align:center;pointer-events:none;max-width:38%}
.ptt #pt{font-size:13.5px;font-weight:600;color:#f1f1f3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ptt #psub{font-size:11.5px;color:#8e8e94;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pw .main{background:#1c1d20}
.pw .main .pg{gap:2px;padding:0 2px 2px}
.pw .viewer{padding:6px 16px 16px}
@media (max-width:760px){.ps{display:none}}

/* it is a screen, not a page: nothing zooms, nothing drags, nothing bounces; only the open app scrolls inside itself */
html,body{position:fixed;inset:0;width:100%;height:100%;height:100dvh;overflow:hidden;overscroll-behavior:none;touch-action:manipulation;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}
body{-webkit-user-select:none;user-select:none}
.paper,.paper *,.pg,.about{-webkit-user-select:text;user-select:text}
img,svg,video{-webkit-user-drag:none;user-drag:none}
.docscroll,.main,.fgrid,.ps,.amenu{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
@media (max-width:760px){
 .icons{top:calc(26px + env(safe-area-inset-top,0px))}
 .win{top:env(safe-area-inset-top,0px)!important}
 .dock{bottom:calc(34px + env(safe-area-inset-bottom,0px))}
 .hind{bottom:calc(6px + env(safe-area-inset-bottom,0px))}
 .mbar,.ptb{touch-action:none}
}

/* boot screen: black, the Apple mark, a thin bar that fills in uneven steps, then the desktop */
#boot{position:fixed;inset:0;z-index:2000;background:#000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:68px;transition:opacity .6s ease}
#boot.done{opacity:0;pointer-events:none}
#boot .logo{width:121px;height:100px}#boot .logo svg{width:100%;height:100%}
#boot .bootbar{width:200px;height:3px;border-radius:2px;background:rgba(255,255,255,.2);overflow:hidden}
#boot .bootbar i{display:block;height:100%;width:0;background:#fff;border-radius:2px}
@media (max-width:760px){#boot{gap:60px}#boot .logo{width:102px;height:84px}}

/* iPhone, iPad and the Duo have Files, not Finder */
.dk .tile .fi-mac,.dk .tile .fi-ios{display:block;width:100%;height:100%}
html[data-os="mac"] .dk .tile .fi-ios,html[data-os="mac"] .tip .fi-ios,html[data-os="mac"] .fi-ios{display:none}
html:not([data-os="mac"]) .dk .tile .fi-mac,html:not([data-os="mac"]) .tip .fi-mac,html:not([data-os="mac"]) .fi-mac{display:none}
.dk .tile .fi-mac svg,.dk .tile .fi-ios svg{width:100%;height:100%;display:block}

/* iPhone, iPad and Duo: an app fills the screen, as on the device itself. Only the Mac has floating windows. */
html[data-os="ipad"] .win,html[data-os="duo"] .win{left:0!important;right:0!important;top:env(safe-area-inset-top,0px)!important;bottom:0!important;width:auto!important;height:auto!important;max-height:none!important;filter:none!important;transform:none!important}
html[data-os="ipad"] .win.mac .mwin,html[data-os="duo"] .win.mac .mwin{border-radius:0;box-shadow:none}
html[data-os="ipad"] .lights,html[data-os="duo"] .lights{display:none}
html[data-os="ipad"] .mbar,html[data-os="duo"] .mbar{justify-content:center;height:44px;cursor:default}
html[data-os="ipad"] .mt,html[data-os="duo"] .mt{margin:0}
html[data-os="ipad"] .arrows.sp2,html[data-os="duo"] .arrows.sp2{display:none}
html[data-os="ipad"] #w-brw .arrows,html[data-os="duo"] #w-brw .arrows{width:auto}
html[data-os="ipad"] .win.mini,html[data-os="duo"] .win.mini{display:none}
html[data-os="duo"] .paper,html[data-os="ipad"] .paper{padding:34px 28px 90px}
html[data-os="duo"] .side{display:none}
html[data-os="duo"] .hind{left:50%}
/* touch: press feedback instead of hover, no tooltips */
.icons .ico:active .tile,.dk:active .tile{transform:scale(.92);transition:transform .08s}
.icons .ico:active .lab{opacity:.7}
@media (hover:none){.ico:hover .tile{transform:none}.dk:hover .tip,.dk:focus-visible .tip{opacity:0}}

/* an open app fills the screen on a device: the dock goes away until it is closed */
html[data-os="ios"].has-app .dock,html[data-os="ipad"].has-app .dock,html[data-os="duo"].has-app .dock{display:none}
/* phone toolbar: no sidebar and no zoom slider, just the title (and Back and the heart when a photo is open) */
@media (max-width:760px){#ptog,#pz{display:none!important}.ptt{max-width:56%}.ptb{padding:0 12px}}


.hind:active::after{background:#fff;transform:scaleX(1.08)}

/* on a phone the browser window starts on a light page (the 3D Preview inside it froze the device), and its page stops above the home bar so nothing underneath can catch the tap */
html:not([data-os="mac"]) #w-brw .frame{height:calc(100% - 44px - 56px - env(safe-area-inset-bottom,0px));flex:none}

/* the dock's corners are the icons' corners plus the dock's padding, so the two curves stay parallel at every size and while icons magnify */
.dk .tile,.dk .tile.plain{border-radius:22.5%}
html[data-os="ios"] .dk .tile,html[data-os="ipad"] .dk .tile,html[data-os="duo"] .dk .tile{border-radius:22.5%}

/* Liquid Glass: a clear, bright-edged material. Heavy blur and saturation behind, a rim of light that fades round the edge, a soft sheen from the top left, and a deep soft shadow. */
.dock,.amenu,.tbb,.zpill{position:relative;isolation:isolate;background:linear-gradient(155deg,rgba(255,255,255,.2),rgba(255,255,255,.06) 55%,rgba(255,255,255,.12));-webkit-backdrop-filter:blur(26px) saturate(1.9) brightness(1.1);backdrop-filter:blur(26px) saturate(1.9) brightness(1.1);border:0;box-shadow:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -1px 0 rgba(255,255,255,.1),inset 0 0 22px rgba(255,255,255,.07),0 18px 44px rgba(0,0,0,.45),0 3px 10px rgba(0,0,0,.3)}
.dock::before,.amenu::before,.tbb::before,.zpill::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;background:radial-gradient(130% 150% at 12% -30%,rgba(255,255,255,.34),rgba(255,255,255,0) 55%)}
.dock::after,.amenu::after,.tbb::after,.zpill::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;background:linear-gradient(160deg,rgba(255,255,255,.75),rgba(255,255,255,.08) 34%,rgba(255,255,255,.04) 64%,rgba(255,255,255,.4));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.dock,.amenu{position:fixed}
.tbb:hover,.zpill:hover{background:linear-gradient(155deg,rgba(255,255,255,.3),rgba(255,255,255,.1) 55%,rgba(255,255,255,.18))}
.menu{background:linear-gradient(180deg,rgba(255,255,255,.1),rgba(255,255,255,.03));-webkit-backdrop-filter:blur(30px) saturate(1.8);backdrop-filter:blur(30px) saturate(1.8);border-bottom:0;box-shadow:inset 0 -1px 0 rgba(255,255,255,.16),0 6px 24px rgba(0,0,0,.28)}
.amenu button:hover,.amenu button:focus-visible{background:rgba(255,255,255,.2);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.35)}
.dk .tip{background:rgba(255,255,255,.14);-webkit-backdrop-filter:blur(20px) saturate(1.8);backdrop-filter:blur(20px) saturate(1.8);border:0;box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 8px 20px rgba(0,0,0,.4)}

.vst{flex:1;min-height:0;display:flex;flex-direction:column;touch-action:pan-y;will-change:transform}

/* Settings (phones, iPad, Duo): an iOS-style grouped list. The Mac gets About from the Apple menu instead. */
html[data-os="mac"] .ico.touch{display:none}
.sets{flex:1;overflow:auto;background:#000;padding:20px 16px 96px;overscroll-behavior:contain}
.sets .brand{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;margin:8px 0 26px}
.sets .alogo{width:96px;height:80px;filter:drop-shadow(0 0 16px rgba(240,160,32,.25))}
.sets h2{font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:34px;line-height:1;margin:8px 0 0;letter-spacing:.02em;color:#f3f3f5}
.sets .brand p{margin:0;font-size:13.5px;color:#8e8e93;max-width:26ch;line-height:1.4}
.sgroup{background:#1c1c1e;border-radius:14px;overflow:hidden;margin:0 auto 22px;max-width:620px}
.srow{all:unset;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center;width:100%;padding:14px 16px;font-size:16.5px;color:#fff;border-bottom:1px solid rgba(255,255,255,.09)}
.sgroup>.srow:last-child{border-bottom:0}
.srow em{font-style:normal;color:#8e8e93}.srow a{color:#f0a020;text-decoration:none}.srow i{font-style:normal;color:#5a5a5f;font-size:22px;line-height:1}
.srow.go{cursor:pointer}.srow.go:active{background:rgba(255,255,255,.1)}

/* captured for a device mock-up. On a laptop shot Stager draws its own Dock over the picture, so the page's would show as a second, clipped one. On a phone the dock stays, as designed: it is lifted clear of the Safari bar the mock-up lays over the bottom of the screen */
html.cap[data-os="mac"] .dock{display:none}
@media (min-height:800px){html.cap[data-os="ios"] .dock,html.cap[data-os="ipad"] .dock,html.cap[data-os="duo"] .dock{bottom:244px}   /* the page's own layout ends where the Safari bar begins (about 176 px up), so the dock sits its usual 34 px above that edge, as in a real browser */
html.cap[data-os="ios"] .hind,html.cap[data-os="ipad"] .hind,html.cap[data-os="duo"] .hind{bottom:216px}}

/* swipe-up to close: the app rides your finger, shrinking and rounding; on release it flies off or springs back */
.win.drag{transform:translateY(var(--dy,0)) scale(var(--s,1))!important;transform-origin:50% 100%;transition:none!important;overflow:hidden;border-radius:var(--r,0);will-change:transform,opacity}
.win.snap{transform:translateY(var(--dy,0)) scale(var(--s,1))!important;transform-origin:50% 100%;overflow:hidden;border-radius:var(--r,0);transition:transform .24s cubic-bezier(.2,.8,.2,1),opacity .22s,border-radius .24s!important}
html:not([data-os="mac"]) .hind{touch-action:none}

/* phones, iPad, Duo: the app grows out of the icon you tapped, like an iPhone */
@keyframes rise{from{opacity:0;scale:.14;translate:0 0}60%{opacity:1}to{opacity:1;scale:1}}
html:not([data-os="mac"]) .win.on.opening{transform-origin:var(--ox,50%) var(--oy,100%);animation:rise .36s cubic-bezier(.2,.85,.25,1)}
html:not([data-os="mac"]) .win.on:not(.opening){animation:none}   /* never replay the open animation after a swipe springs back */

/* swipe right from the left edge: the app slides with your finger */
.win.side{translate:var(--dx,0) 0;transition:none;will-change:translate}
.win.side.snap{transition:translate .23s cubic-bezier(.2,.8,.2,1)}

/* closing: keep it solid while it flies up, fade only in the last moment */
.win.snap.fly{transition:transform .3s cubic-bezier(.3,.7,.2,1),border-radius .3s,opacity .1s linear .2s!important}

/* centre-anchored: the app shrinks around its middle and its middle follows the finger */
.win.drag,.win.snap{transform:translate(var(--tx,0),var(--dy,0)) scale(var(--s,1))!important;transform-origin:50% 50%}

/* phones: invisible edge strips over the open app, so the swipe-up and swipe-back are seen even over Safari's web page (an iframe swallows touches) */
html:not([data-os="mac"]).has-app body::before{content:"";position:fixed;left:0;right:0;bottom:0;height:calc(40px + env(safe-area-inset-bottom,0px));z-index:969;touch-action:none}
html:not([data-os="mac"]).has-app body::after{content:"";position:fixed;left:0;top:70px;bottom:40px;width:22px;z-index:969;touch-action:none}

/* while an app is being swiped away the dock shows beneath it, so the app has an icon to shrink into */
html.peek .dock{display:flex!important;z-index:1}

/* the swipe zone sits just above the system's bottom-edge gesture (iPad Safari takes the last few pixels for itself) */
html:not([data-os="mac"]).has-app body::before{bottom:14px;height:86px}
html[data-os="ipad"] .hind,html[data-os="duo"] .hind{bottom:calc(34px + env(safe-area-inset-bottom,0px))}
html[data-os="ipad"] .dock,html[data-os="duo"] .dock{bottom:calc(46px + env(safe-area-inset-bottom,0px))}

html:not([data-os="mac"]).has-app body::before{bottom:10px;height:120px}
/* touch screens: the strip over the bottom does the work; the drawn bar is only a hint and lets touches through */
@media (pointer:coarse){.hind{pointer-events:none}}

/* the shape blends into the icon: clipped from top and bottom while it scales */
.win.drag,.win.snap{clip-path:var(--cp,inset(0px 0px 0px 0px round 0px));border-radius:0;overflow:visible}
.win.snap{transition:transform .24s cubic-bezier(.2,.8,.2,1),opacity .22s,clip-path .24s cubic-bezier(.2,.8,.2,1)!important}
.win.snap.fly{transition:transform .3s cubic-bezier(.3,.7,.2,1),clip-path .3s cubic-bezier(.3,.7,.2,1),opacity .1s linear .2s!important}

.win.drag,.win.snap{isolation:isolate}

/* the iPad and Duo rules force transform:none on windows; the swipe has to outrank them */
html:not([data-os="mac"]) .win.drag,html:not([data-os="mac"]) .win.snap{transform:translate(var(--tx,0),var(--dy,0)) scale(var(--s,1))!important;transform-origin:50% 50%}
html:not([data-os="mac"]) .win.side{filter:none!important}

/* the swipe strip is just the band around the home bar, so scrolling a page (Read Me, Files, Photos) never starts a close */
html:not([data-os="mac"]).has-app body::before{bottom:8px;height:54px}

/* arriving at the icon: the window dissolves over the last part of the flight instead of vanishing */
.win.snap.fly{transition:transform .32s cubic-bezier(.3,.7,.2,1),clip-path .32s cubic-bezier(.3,.7,.2,1),opacity .2s ease-in .1s!important}

/* the swipe strip is built on the drawn bar itself: it follows the bar on every device and sits wherever the bar sits */
html:not([data-os="mac"]).has-app body::before{display:none}
.hind::before{content:"";position:absolute;left:-100vw;right:-100vw;top:-16px;bottom:-12px;pointer-events:auto;touch-action:none}

/* Animate is a desktop tool: not offered on phones */
html[data-os="ios"] .ico[data-app="0"],html[data-os="duo"] .ico[data-app="0"],html[data-os="ios"] .paper .desk,html[data-os="duo"] .paper .desk{display:none}
.apple svg{width:20px;height:20px}

/* the intro: full screen on a first visit, over the desktop and under the boot */
#intro{position:fixed;inset:0;z-index:1500;background:#0d0b09;overflow:hidden}
#intro[hidden]{display:none}
#intro iframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:#0d0b09}
#introico[hidden]{display:none}
#intro video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#0d0b09}
#intro video[hidden],#intro button[hidden],#intro iframe[hidden]{display:none}
#introskip{position:absolute;right:18px;bottom:calc(16px + env(safe-area-inset-bottom,0px));font:700 12px/1 "DM Sans",sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#b9b2a8;background:rgba(20,18,16,.7);border:1px solid rgba(255,255,255,.14);padding:9px 14px;border-radius:7px;cursor:pointer}
#introsnd{position:absolute;left:18px;bottom:calc(16px + env(safe-area-inset-bottom,0px));font:700 12px/1 "DM Sans",sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#1a1206;background:#f0a020;border:0;padding:9px 14px;border-radius:7px;cursor:pointer}
#intro button[hidden]{display:none}

/* hub stage: a real, Stager-rendered MacBook that turns from back to front once, behind the wordmark. Black studio backdrop drops out via screen blend, edges fade by mask. */
.stagedev{position:fixed;--sw:min(64vw,980px,calc((100vh - 200px)*1.7));--dy:calc(var(--sw)*-.017);left:calc(50% - var(--sw)*.038);top:calc(50% + var(--sw)*.082 + var(--dy));width:var(--sw);aspect-ratio:16/9;transform:translate(-50%,-50%);pointer-events:none;z-index:0;mix-blend-mode:screen;-webkit-mask-image:radial-gradient(ellipse 50% 50% at 50% 50%,#000 60%,transparent 100%);mask-image:radial-gradient(ellipse 50% 50% at 50% 50%,#000 60%,transparent 100%)}
.stagedev video{width:100%;height:100%;display:block;object-fit:cover;opacity:0}.stagedev video.on{opacity:1}
@media (max-width:760px){.stagedev{--sw:min(120vw,560px);--dy:calc(var(--sw)*.085)}}
html[data-os="duo"] .stagedev{display:none}
html.has-app .stagedev{visibility:hidden}
/* keep the lockup legible over the bright screen: dim the render, soften a dark halo behind the type */
.stagedev video{filter:brightness(.3) saturate(.9)}
.word{filter:drop-shadow(0 4px 22px rgba(0,0,0,.75)) drop-shadow(0 0 40px rgba(0,0,0,.5))}

/* iPad / tablet hub: iPadOS-style icon grid (even columns, centered, rows start at the left), lockup centered in the free space between the icons and the dock, MacBook reveal behind it */
html[data-os="ipad"]{--wy:17px}
html[data-os="ipad"] .icons{left:0;right:0;grid-template-columns:repeat(7,112px);justify-content:center;gap:30px 24px}
html[data-os="ipad"] .icons .ico{width:112px;justify-self:center}
html[data-os="ipad"] .word{top:calc(50% + var(--wy));transform:translate(-50%,-50%)}
html[data-os="ipad"] .stagedev{--dy:var(--wy)}
@media (orientation:portrait){html[data-os="ipad"]{--wy:60px}html[data-os="ipad"] .icons{grid-template-columns:repeat(4,128px);gap:30px 36px}html[data-os="ipad"] .icons .ico{width:128px}}

/* Mac desktop icons at the macOS default size (64 px), all the same, the drive included */
html[data-os="mac"] .icons .ico{width:92px;gap:4px;padding:4px 4px 2px}
html[data-os="mac"] .icons .tile,html[data-os="mac"] .icons .ico.hd .tile{width:64px;height:64px;border-radius:15px}
