@font-face{font-family:Merri;src:url(fonts/merri-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:Merri;src:url(fonts/merri-700.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:Merri;src:url(fonts/merri-900.woff2) format("woff2");font-weight:900;font-display:swap}
@font-face{font-family:Inter;src:url(fonts/inter.woff2) format("woff2");font-weight:100 900;font-display:swap}
:root{--g:clamp(20px,5.5vw,40px);--bar:48px;--sb:env(safe-area-inset-bottom,0px);--ease:cubic-bezier(.2,.8,.2,1);--io:cubic-bezier(.7,0,.2,1);--acc:#ffb547;--ink:#f5f6ff;--mut:rgba(245,246,255,.72);--line:rgba(255,255,255,.16);--glass:rgba(255,255,255,.12);--r:12px;--serif:Merri,Georgia,serif;--sans:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;text-size-adjust:100%;height:100%;overflow:hidden;background:#0d1033}
body{margin:0;height:100%;overflow:hidden;font:400 15px/1.5 var(--sans);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none}
button,input,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer}
a{color:inherit}
:focus-visible{outline:2px solid #fff;outline-offset:2px}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ico{width:36px;height:36px;display:block;flex:none}
.ico-s{width:16px;height:16px;display:block;flex:none}
.ico-w{width:16px;height:16px;display:block}
img{display:block;max-width:100%}

/* ---------- desk ---------- */
.desk{position:fixed;inset:0;overflow:hidden;background:radial-gradient(120% 90% at 70% 10%,#2a1f7a 0%,#141a52 45%,#090c26 100%);transition:transform .7s var(--ease),opacity .7s var(--ease)}
body.is-locked .desk{transform:scale(1.04);opacity:.6}
.wall{position:absolute;inset:0;width:100%;height:100%}
.hello{position:absolute;left:0;right:0;top:calc(var(--g) + 18vh);text-align:center;font:900 clamp(78px,17vw,250px)/1 var(--serif);letter-spacing:.04em;color:transparent;background:linear-gradient(180deg,#fff 10%,#c7cbff 60%,rgba(170,160,255,.25) 100%);-webkit-background-clip:text;background-clip:text;pointer-events:none;user-select:none;white-space:nowrap;filter:drop-shadow(0 8px 40px rgba(120,110,255,.45))}
.me{position:absolute;left:50%;bottom:var(--bar);height:min(76vh,860px);width:auto;max-width:none;transform:translateX(-50%);pointer-events:none;user-select:none;filter:drop-shadow(0 18px 40px rgba(0,0,0,.45))}
.icons{position:absolute;left:var(--g);top:var(--g);display:grid;grid-auto-flow:column;grid-template-rows:repeat(6,88px);grid-auto-columns:80px;gap:8px 8px;z-index:2}
.dicon{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:6px;width:80px;height:88px;padding:8px 2px 0;border-radius:8px;text-decoration:none;color:#fff;border:1px solid transparent;transition:background .15s,border-color .15s}
.dicon .ico{width:40px;height:40px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35))}
.dicon span{font-size:12px;line-height:16px;font-weight:500;text-align:center;text-shadow:0 1px 3px rgba(0,0,0,.8);overflow-wrap:anywhere}
.dicon:hover,.dicon:focus-visible{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.18)}
.dicon:active{background:rgba(255,255,255,.2)}
.hi{position:absolute;right:var(--g);top:50%;transform:translateY(-50%);width:clamp(300px,30vw,420px);padding:24px 28px;border-radius:40px;background:rgba(10,12,40,.28);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.14);font:700 21px/1.55 var(--serif);z-index:1}
.hi p{margin:0}
.hi u{font-size:1.14em;text-decoration-thickness:2px;text-underline-offset:4px}
.hi small{display:block;margin-top:16px;font:400 14px/1.4 var(--serif);color:var(--mut)}

/* ---------- taskbar ---------- */
.bar{position:fixed;left:0;right:0;bottom:0;height:calc(var(--bar) + var(--sb));padding-bottom:var(--sb);display:flex;align-items:center;justify-content:center;background:rgba(232,234,250,.72);-webkit-backdrop-filter:blur(24px) saturate(1.4);backdrop-filter:blur(24px) saturate(1.4);border-top:1px solid rgba(255,255,255,.5);z-index:60;color:#14162e}
.bar-mid{display:flex;align-items:center;gap:4px}
.tb{position:relative;display:grid;place-items:center;width:44px;height:44px;border-radius:6px;transition:background .15s}
.tb .ico{width:28px;height:28px}
.tb:hover{background:rgba(255,255,255,.6)}
.tb:active .ico{transform:scale(.88)}
.tb .ico{transition:transform .12s}
.tb.is-run::after{content:"";position:absolute;bottom:2px;left:50%;width:6px;height:3px;margin-left:-3px;border-radius:2px;background:#5a5f80;transition:width .2s,margin .2s,background .2s}
.tb.is-front::after{width:16px;margin-left:-8px;background:#4b4fe0}
.tb-sep{width:1px;height:24px;margin:0 4px;background:rgba(20,22,46,.18)}
.tray{position:absolute;right:var(--g);top:0;height:var(--bar);display:flex;flex-direction:column;align-items:flex-end;justify-content:center;font-size:12px;line-height:16px}

/* ---------- start ---------- */
.start{position:fixed;left:50%;bottom:calc(var(--bar) + var(--sb) + 12px);width:min(640px,calc(100% - 2 * var(--g)));max-height:calc(100% - var(--bar) - var(--sb) - 24px);overflow:auto;transform:translateX(-50%);padding:24px 24px 0;border-radius:12px;background:rgba(32,33,48,.9);-webkit-backdrop-filter:blur(30px) saturate(1.3);backdrop-filter:blur(30px) saturate(1.3);border:1px solid rgba(255,255,255,.1);box-shadow:0 24px 60px rgba(0,0,0,.5);z-index:70;animation:pop .22s var(--ease)}
.start[hidden]{display:none}
@keyframes pop{from{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%,0)}}
.search{display:flex;align-items:center;gap:12px;height:46px;padding:0 16px;border-radius:22px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-bottom-color:var(--acc)}
.search input{flex:1;min-width:0;height:100%;background:none;border:0;outline:0;font-size:15px}
.search input::placeholder{color:rgba(255,255,255,.55)}
.search input::-webkit-search-cancel-button{display:none}
.srow{display:flex;align-items:center;justify-content:space-between;margin:16px 0 4px}
.srow h2{margin:0;font-size:14px;font-weight:600}
.pill{display:inline-flex;align-items:center;gap:4px;height:44px;padding:0 8px 0 12px;border-radius:8px;background:rgba(255,255,255,.06);font-size:12px}
.pill:hover{background:rgba(255,255,255,.14)}
.tiles{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}
.tile{display:flex;flex-direction:column;align-items:center;gap:8px;min-height:88px;padding:12px 4px 8px;border-radius:8px;text-decoration:none;color:#fff}
.tile .ico{width:32px;height:32px}
.tile span{font-size:12px;line-height:16px;text-align:center}
.tile:hover,.rrow:hover{background:rgba(255,255,255,.08)}
.recs{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.rrow{display:flex;align-items:center;gap:12px;min-height:56px;padding:8px 12px;border-radius:8px;text-decoration:none;min-width:0}
.rrow .ico{width:32px;height:32px}
.rrow span{display:flex;flex-direction:column;min-width:0}
.rrow b{font-size:13px;font-weight:500;line-height:18px}
.rrow small{font-size:12px;line-height:16px;color:rgba(255,255,255,.62);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.recs .is-more{display:none}
.recs.show-more .is-more{display:flex}
.start.is-searching .srow,.start.is-searching .recs .is-more{display:none}
.start.is-searching .recs .rrow,.start.is-searching .tiles>*{display:none}
.start.is-searching .hit{display:flex!important}
.start.is-searching .tiles,.start.is-searching .recs{margin-top:16px}
.nomatch{margin:16px 0 0;font-size:13px;color:rgba(255,255,255,.7)}
.sfoot{position:sticky;bottom:0;display:flex;align-items:center;justify-content:space-between;margin:24px -24px 0;padding:8px 24px;background:rgba(22,23,36,.96);border-top:1px solid rgba(255,255,255,.08)}
.who{display:flex;align-items:center;gap:12px;font-size:13px;font-weight:500}
.who img{width:32px;height:32px;border-radius:50%;object-fit:cover;background:#2a2c4a}
.pwr{display:grid;place-items:center;width:44px;height:44px;border-radius:6px}
.pwr:hover{background:rgba(255,255,255,.1)}

/* ---------- windows ---------- */
.win{position:absolute;left:var(--wx,calc(var(--g) + 120px));top:var(--wy,var(--g));width:min(1080px,calc(100% - var(--wx,0px) - var(--g)));height:calc(100% - var(--bar) - var(--sb) - var(--wy,var(--g)) - var(--g));display:flex;flex-direction:column;border-radius:10px;overflow:hidden;background:#15173a;border:1px solid rgba(255,255,255,.14);box-shadow:0 30px 80px rgba(0,0,0,.55),0 0 0 1px rgba(0,0,0,.3);z-index:10;transform-origin:50% 60%;animation:wopen .22s var(--ease)}
.win[hidden]{display:none}
@keyframes wopen{from{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:none}}
.win.is-closing{animation:wclose .16s ease-in forwards}
@keyframes wclose{to{opacity:0;transform:scale(.96) translateY(6px)}}
.win.is-min{animation:wmin .22s ease-in forwards}
@keyframes wmin{to{opacity:0;transform:translateY(40vh) scale(.6)}}
.win.is-max{left:0!important;top:0!important;width:100%!important;height:calc(100% - var(--bar) - var(--sb))!important;border-radius:0;border:0}
.wbar{flex:none;display:flex;align-items:center;justify-content:space-between;height:44px;background:#1f2147;border-bottom:1px solid rgba(255,255,255,.08);user-select:none;touch-action:none}
.wbar-t{display:flex;align-items:center;gap:12px;padding-left:16px;font-size:13px;font-weight:500;min-width:0}
.wbar-t span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wbar-ico{width:20px;height:20px;flex:none}
.wbar-b{display:flex;height:100%}
.wb{display:grid;place-items:center;width:46px;height:44px;color:#fff;transition:background .12s}
.wb:hover{background:rgba(255,255,255,.1)}
.wb-x:hover{background:#d93a2b}
.wbody{position:relative;flex:1;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:radial-gradient(60% 50% at 15% 0%,rgba(255,154,77,.22),transparent 70%),radial-gradient(50% 60% at 100% 30%,rgba(143,59,255,.25),transparent 70%),radial-gradient(70% 50% at 40% 100%,rgba(31,163,196,.2),transparent 70%),#15173a}
.wwrap{max-width:1000px;margin:0 auto;padding:var(--g) var(--g) calc(var(--g) + 8px)}
.whead{display:flex;align-items:center;gap:24px;margin-bottom:32px}
.whead-ico{width:88px;height:88px;flex:none;filter:drop-shadow(0 10px 24px rgba(0,0,0,.4))}
.whead h2{margin:0;font:900 clamp(30px,5vw,44px)/1.1 var(--serif);letter-spacing:.01em}
.whead p{margin:8px 0 0;color:var(--mut);font-size:15px;max-width:52ch}
.panel{background:var(--glass);border:1px solid var(--line);border-radius:var(--r);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 16px;border-radius:8px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.08);text-decoration:none;font-size:14px;font-weight:500;transition:background .15s,border-color .15s;max-width:100%}
.btn:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.45)}
.btn-solid{background:var(--acc);border-color:var(--acc);color:#2a1700;font-weight:600}
.btn-solid:hover{background:#ffc56e;border-color:#ffc56e}

/* products */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:24px}
.pcard{display:flex;flex-direction:column;border-radius:var(--r);overflow:hidden;background:var(--glass);border:1px solid var(--line);transition:transform .25s var(--ease),border-color .25s}
.pcard:hover{transform:translateY(-4px);border-color:rgba(255,255,255,.32)}
.pcard-art{position:relative;aspect-ratio:260/136;background:linear-gradient(135deg,var(--c1),var(--c2))}
.pcard-art svg{position:absolute;inset:0;width:100%;height:100%}
.status{position:absolute;top:12px;right:12px;height:24px;padding:0 10px;border-radius:12px;font-size:11px;line-height:24px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;background:rgba(10,12,40,.55);color:#fff}
.status.is-live::before{content:"";display:inline-block;width:6px;height:6px;margin:0 6px 1px 0;border-radius:50%;background:#4cff9a;vertical-align:middle}
.pcard-body{display:flex;flex-direction:column;flex:1;padding:16px 16px 16px}
.pcard-kind{margin:0;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--mut)}
.pcard h3{margin:4px 0 8px;font:900 22px/1.2 var(--serif);color:var(--acc)}
.pcard-desc{margin:0 0 16px;font-size:14px;line-height:1.55;color:rgba(245,246,255,.86)}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px;padding:0;list-style:none;margin-top:auto}
.tags li{height:24px;padding:0 10px;border-radius:12px;font-size:12px;line-height:24px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.12)}
.pcard .btn{align-self:stretch;font-size:13px}

/* series */
.sgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:24px;padding:24px}
.scol h3{display:flex;align-items:center;gap:8px;margin:0 0 12px;font:700 15px/1.3 var(--serif)}
.scol-k{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--acc);color:#2a1700;font:900 14px/1 var(--serif)}
.scol-c{margin-left:auto;font:500 12px/1 var(--sans);color:var(--mut)}
.scol ul{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
.chip{display:flex;align-items:center;gap:8px;min-height:44px;padding:4px 12px;border-radius:8px;text-decoration:none;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);transition:background .15s,border-color .15s}
.chip:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.3)}
.chip-dot{width:8px;height:8px;border-radius:50%;flex:none;background:linear-gradient(135deg,#7cf2e4,#1fa3c4)}
.chip-t{font:500 14px/1.2 ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace}
.chip-n{font-size:11px;line-height:1.3;color:var(--mut);margin-left:auto;text-align:right}
.foot-note{margin:24px 0 0;font-size:14px;color:var(--mut)}
.foot-note a{display:inline-flex;align-items:center;min-height:44px;color:#fff;text-underline-offset:3px}

/* studio */
.sgrid2{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:24px}
.note{padding:24px;border-radius:var(--r);background:var(--glass);border:1px solid var(--line)}
.note-n{font:900 14px/1 var(--serif);color:var(--acc)}
.note h3{margin:12px 0 8px;font:900 20px/1.25 var(--serif)}
.note p{margin:0;font-size:14px;color:rgba(245,246,255,.84)}

/* readme */
.win-note .wbody{background:#f7f7fb;color:#1b1d2e}
.win-note .wwrap{padding:0;max-width:none}
.pad{min-height:100%}
.menu-row{display:flex;gap:24px;height:36px;align-items:center;padding:0 var(--g);font-size:13px;border-bottom:1px solid #e3e4ef;background:#fff}
.txt{margin:0;padding:var(--g);font:400 14px/1.7 ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}

/* contact */
.cgrid{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}
.clinks{display:flex;flex-direction:column;gap:12px;margin:0;padding:0;list-style:none}
.clinks a{display:flex;align-items:center;gap:16px;min-height:72px;padding:12px 16px;border-radius:var(--r);background:var(--glass);border:1px solid var(--line);text-decoration:none;transition:background .15s,border-color .15s}
.clinks a:hover{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.3)}
.clinks .ico{width:40px;height:40px}
.clinks span{display:flex;flex-direction:column;flex:1;min-width:0}
.clinks b{font:700 16px/1.3 var(--serif)}
.clinks small{font-size:13px;color:var(--mut);overflow-wrap:anywhere}
.cform{display:flex;flex-direction:column;gap:16px;padding:24px}
.cform h3{margin:0;font:900 20px/1.25 var(--serif)}
.cform label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--mut)}
.cform input,.cform textarea{width:100%;min-height:44px;padding:10px 12px;border-radius:8px;background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.18);color:#fff;font-size:16px;resize:vertical}
.cform input:focus,.cform textarea:focus{outline:0;border-color:var(--acc)}
.cform .is-bad{border-color:#ff6b6b}
.cerr{margin:0;font-size:13px;color:#ffb0b0}

/* ---------- lock ---------- */
.lock{position:fixed;inset:0;z-index:100;overflow:hidden;color:#fff;cursor:pointer;background:#0d1033;transition:transform .6s var(--io),opacity .6s var(--io)}
.lock picture,.lock-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lock::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,8,30,.55),rgba(6,8,30,.05) 45%,rgba(6,8,30,.15) 70%,rgba(6,8,30,.6))}
.lock-top{position:absolute;left:var(--g);right:var(--g);top:12vh;text-align:center;z-index:1}
.ltime{margin:0;font:900 clamp(72px,20vw,128px)/1 var(--serif);letter-spacing:.01em;text-shadow:0 4px 30px rgba(0,0,0,.3);font-variant-numeric:tabular-nums}
.ldate{margin:16px 0 0;font:400 clamp(18px,4.6vw,24px)/1.3 var(--serif)}
.lock-go{position:absolute;left:var(--g);right:var(--g);bottom:calc(var(--g) + 64px + var(--sb));z-index:1;display:flex;align-items:center;justify-content:center;gap:12px;min-height:44px;font:700 clamp(17px,4.4vw,22px)/1.3 var(--serif);text-shadow:0 2px 12px rgba(0,0,0,.4)}
.ico-l{width:26px;height:26px}
.lock-go .ico-l{animation:nudge 2.4s var(--ease) infinite}
@keyframes nudge{0%,70%,100%{transform:none}80%{transform:translateY(-4px)}90%{transform:translateY(0)}}
.toast{position:absolute;left:var(--g);bottom:calc(var(--g) + var(--sb));z-index:2;display:flex;align-items:center;gap:8px;max-width:calc(100% - 2 * var(--g));min-height:48px;padding:2px 2px 2px 16px;border-radius:8px;background:rgba(20,22,46,.86);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.14);font-size:14px;line-height:1.4;cursor:default;animation:toastin .5s .8s var(--ease) both}
.toast span{padding:10px 0}
.toast button{display:grid;place-items:center;width:44px;height:44px;flex:none;border-radius:6px}
.toast button:hover{background:rgba(255,255,255,.1)}
.toast.is-gone{display:none}
@keyframes toastin{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
body:not(.is-locked) .lock{transform:translateY(-100%);opacity:.4;pointer-events:none}
.lock.is-off{visibility:hidden}

/* ---------- small screens ---------- */
@media (max-width:699px){
  .icons{left:var(--g);right:var(--g);grid-auto-flow:row;grid-template-rows:none;grid-template-columns:repeat(4,1fr);grid-auto-columns:auto;gap:8px 0;justify-items:center}
  .dicon{width:76px}
  .hello{top:calc(var(--g) + 196px + 2vh);font-size:clamp(64px,21vw,120px)}
  .me{height:calc(100% - var(--bar) - var(--sb) - 230px);max-height:640px;bottom:calc(var(--bar) + var(--sb))}
  .hi{left:var(--g);right:var(--g);top:auto;bottom:calc(var(--bar) + var(--sb) + var(--g));transform:none;width:auto;padding:16px 20px;border-radius:28px;font-size:16px;background:rgba(10,12,40,.5)}
  .hi small{margin-top:8px;font-size:12px}
  .tray{display:none}
  .win{left:0!important;top:0!important;width:100%!important;height:calc(100% - var(--bar) - var(--sb))!important;border-radius:0;border:0}
  .wb-max{display:none}
  .whead{gap:16px;margin-bottom:24px}
  .whead-ico{width:64px;height:64px}
  .pgrid{grid-template-columns:1fr;gap:16px}
  .sgrid{grid-template-columns:1fr 1fr;gap:24px 16px;padding:16px}
  .scol:last-child{grid-column:1/-1}
  .scol:last-child ul{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .chip-n{display:none}
  .sgrid2{grid-template-columns:1fr;gap:16px}
  .cgrid{grid-template-columns:1fr;gap:16px}
  .start{padding:16px 16px 0;bottom:calc(var(--bar) + var(--sb) + 8px);max-height:calc(100% - var(--bar) - var(--sb) - 16px)}
  .sfoot{margin:16px -16px 0;padding:4px 16px}
  .srow{margin:12px 0 4px}
  .tiles{grid-template-columns:repeat(3,1fr)}
  .recs{grid-template-columns:1fr}
  .lock-top{top:14vh}
}
@media (max-width:699px) and (max-height:700px){
  .icons{gap:0}
  .dicon{height:80px}
  .hello{top:calc(var(--g) + 176px)}
  .me{height:calc(100% - var(--bar) - var(--sb) - 200px)}
  .hi{padding:12px 16px;font-size:15px}
  .hi small{display:none}
}
@media (min-width:700px) and (max-height:760px){.icons{grid-template-rows:repeat(5,88px)}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
