@font-face{font-family:"Manrope";src:url("assets/fonts/manrope-latin.woff2") format("woff2");font-weight:200 800;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Manrope";src:url("assets/fonts/manrope-cyrillic.woff2") format("woff2");font-weight:200 800;font-style:normal;font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"IBM Plex Mono";src:url("assets/fonts/plex-mono-400-latin.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("assets/fonts/plex-mono-500-latin.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("assets/fonts/plex-mono-400-cyrillic.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"IBM Plex Mono";src:url("assets/fonts/plex-mono-500-cyrillic.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}

:root{
  --text:#1b1c22;
  --text-2:#4f5360;
  --muted:#6b7080;
  --bg:#e9edf7;
  --accent:#2f4bff;
  --accent-2:#7d92ff;
  --on-accent:#ffffff;
  --signal:#ff7a45;
  --lime:#d8f25a;
  --surface:#ffffff;
  --surface-2:#f1f3f8;
  --line:rgba(20,22,30,.12);
  --line-strong:rgba(20,22,30,.24);
  --glass:rgba(255,255,255,.46);
  --glass-strong:rgba(255,255,255,.68);
  --glass-line:rgba(255,255,255,.6);
  --menu-bg:rgba(250,250,252,.68);
  --dock-bg:rgba(255,255,255,.38);
  --window-bg:rgba(249,249,251,.94);
  --window-bar:rgba(247,247,249,.88);
  --chrome-line:rgba(20,22,30,.1);
  --status-fg:var(--text);
  --homebar:rgba(20,25,40,.45);
  --icon-label:#ffffff;
  --icon-shadow:0 0 2px rgba(0,0,0,.5),0 1px 3px rgba(0,0,0,.72),0 2px 8px rgba(0,0,0,.4);
  --shadow:0 30px 80px rgba(25,35,80,.22);
  --shadow-soft:0 14px 40px rgba(25,35,80,.16);
  --blob-1:#ff9155;
  --blob-2:#5f80ff;
  --blob-3:#ff8dbc;
  --blob-4:#4fd3ac;
  --wall-base:linear-gradient(140deg,#c2d5ff 0%,#f3cdb2 40%,#dec2ff 100%);
  --orbit-line:rgba(255,255,255,.55);
  --grain-opacity:.035;
  --vignette:radial-gradient(ellipse at 86% 44%,rgba(18,28,62,.1),transparent 40%),linear-gradient(180deg,rgba(13,22,45,.14),transparent 14%,transparent 78%,rgba(13,22,45,.24));
  --icon-size:64px;
  --font-display:"Manrope","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC","Yu Gothic","Meiryo","Apple SD Gothic Neo","Malgun Gothic",sans-serif;
  --font-body:"Manrope","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC","Yu Gothic","Meiryo","Apple SD Gothic Neo","Malgun Gothic",sans-serif;
  --font-mono:"IBM Plex Mono","SFMono-Regular","Cascadia Mono","Liberation Mono",monospace;
  --ease:cubic-bezier(.22,1,.36,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-io:cubic-bezier(.65,0,.35,1);
}
html[data-theme="dark"]{
  --text:#f4f2ea;
  --text-2:#c5c9d6;
  --muted:#9ca2b3;
  --bg:#080a14;
  --accent:#8b9dff;
  --accent-2:#aab7ff;
  --on-accent:#081020;
  --signal:#ff9a72;
  --surface:#171a24;
  --surface-2:#1e2230;
  --line:rgba(255,255,255,.12);
  --line-strong:rgba(255,255,255,.24);
  --glass:rgba(22,25,36,.46);
  --glass-strong:rgba(22,25,36,.72);
  --glass-line:rgba(255,255,255,.14);
  --menu-bg:rgba(14,16,25,.58);
  --dock-bg:rgba(20,23,34,.5);
  --window-bg:rgba(22,24,34,.94);
  --window-bar:rgba(26,28,40,.78);
  --chrome-line:rgba(255,255,255,.1);
  --icon-label:#ffffff;
  --homebar:rgba(255,255,255,.78);
  --icon-shadow:0 1px 3px rgba(0,0,0,.75),0 0 10px rgba(0,0,0,.4);
  --shadow:0 30px 90px rgba(0,0,0,.55);
  --shadow-soft:0 18px 50px rgba(0,0,0,.35);
  --blob-1:#652b6d;
  --blob-2:#1b2e79;
  --blob-3:#3b143f;
  --blob-4:#0c3c43;
  --wall-base:linear-gradient(140deg,#060815 0%,#0b1230 44%,#1c0c30 100%);
  --orbit-line:rgba(255,255,255,.22);
  --grain-opacity:.05;
  --vignette:radial-gradient(ellipse at 86% 44%,rgba(0,0,0,.28),transparent 38%),linear-gradient(180deg,rgba(0,0,0,.42),transparent 18%,transparent 74%,rgba(0,0,0,.4));
}

*{box-sizing:border-box}
[hidden]{display:none!important}
html{background:var(--bg);}
body{margin:0;min-height:100vh;min-height:100svh;color:var(--text);font-family:var(--font-body);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility;overflow-x:hidden;background:var(--bg)}
body.is-app-open{overflow:hidden}
::selection{background:var(--accent);color:var(--on-accent)}
h1,h2,h3,p,figure{margin:0}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
img,svg{display:block;max-width:100%}
ul,ol{margin:0;padding:0;list-style:none}
button,a{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;left:20px;top:10px;z-index:400;padding:9px 14px;background:var(--text);color:var(--bg);font-size:13px;border-radius:8px;transform:translateY(-180%);transition:transform .25s var(--ease)}
.skip-link:focus{transform:translateY(0)}
.mono{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase}

/* wallpaper */
.wallpaper{position:fixed;inset:0;z-index:0;overflow:hidden;background:var(--wall-base);transition:background .5s var(--ease)}
.wallpaper__base{position:absolute;inset:0;background:var(--wall-base);transition:background .5s var(--ease)}
.wallpaper__blob{position:absolute;border-radius:50%;filter:blur(72px);animation:blobFloat 30s var(--ease-io) infinite alternate;transition:background .6s}
.wallpaper__blob--1{width:54vw;height:54vw;left:-14vw;top:-18vw;background:var(--blob-1);opacity:.82}
.wallpaper__blob--2{width:60vw;height:60vw;right:-18vw;top:4vh;background:var(--blob-2);opacity:.7;animation-delay:-8s}
.wallpaper__blob--3{width:46vw;height:46vw;left:12vw;bottom:-20vw;background:var(--blob-3);opacity:.72;animation-delay:-15s}
.wallpaper__blob--4{width:34vw;height:34vw;right:16vw;bottom:-10vh;background:var(--blob-4);opacity:.5;animation-delay:-21s}
.wallpaper__caustics{position:absolute;inset:-12%;z-index:0;pointer-events:none;opacity:0;mix-blend-mode:screen;filter:blur(26px);background:
  radial-gradient(34% 20% at 74% 10%,rgba(134,255,238,.34),transparent 70%),
  radial-gradient(24% 16% at 88% 34%,rgba(96,212,255,.24),transparent 72%),
  radial-gradient(38% 22% at 66% 66%,rgba(82,236,214,.2),transparent 72%),
  radial-gradient(22% 14% at 44% 24%,rgba(180,255,248,.14),transparent 72%),
  radial-gradient(70% 42% at 72% -10%,rgba(170,255,245,.22),transparent 72%);
  animation:causticDrift 26s var(--ease-io) infinite alternate;transition:opacity .8s var(--ease)}
.wallpaper__rays{position:absolute;left:-10%;top:-18%;width:120%;height:92%;z-index:0;pointer-events:none;opacity:0;mix-blend-mode:screen;filter:blur(12px);
  background:repeating-linear-gradient(102deg,rgba(154,255,240,0) 0 46px,rgba(154,255,240,.07) 46px 62px,rgba(154,255,240,0) 62px 132px);
  -webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.9),transparent 78%);
  mask-image:linear-gradient(180deg,rgba(0,0,0,.9),transparent 78%);
  animation:rayShift 30s var(--ease-io) infinite alternate;transition:opacity .8s var(--ease)}
@keyframes causticDrift{from{transform:translate3d(-1.5%,-1%,0) scale(1.02)}to{transform:translate3d(1.5%,1.5%,0) scale(1.06)}}
@keyframes rayShift{from{transform:translateX(-2%) skewX(-2deg)}to{transform:translateX(3%) skewX(2deg)}}
.wallpaper__orbit{position:absolute;right:-14vw;top:5vh;width:min(86vw,1120px);height:min(86vw,1120px);aspect-ratio:1;color:var(--orbit-line);opacity:.65;animation:orbitSpin 160s linear infinite}
.wallpaper__orbit svg{width:100%;height:100%}
.wallpaper__vignette{position:absolute;inset:0;background:var(--vignette);pointer-events:none;z-index:2}
.wallpaper__grain{position:absolute;inset:0;opacity:var(--grain-opacity);mix-blend-mode:soft-light;pointer-events:none;z-index:3;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E")}

/* shared chrome */
.os-main{position:relative;z-index:2;min-height:100vh;min-height:100svh}
.mark{width:17px;height:17px;display:inline-grid;place-items:center}
.mark svg,.mark img{width:100%;height:100%;display:block}
.mark img{filter:drop-shadow(0 1px 2px rgba(2,10,18,.42))}
.icon-sun{display:none}
html[data-theme="dark"] .icon-sun{display:block}
html[data-theme="dark"] .icon-moon{display:none}
.status-dot{width:6px;height:6px;border-radius:50%;background:var(--signal);box-shadow:0 0 0 3px rgba(255,122,69,.16);animation:pulse 2.6s infinite}

/* menubar */
.menubar{position:fixed;top:0;left:0;right:0;height:30px;z-index:120;display:none;align-items:center;justify-content:space-between;padding:0 14px;background:var(--menu-bg);border-bottom:1px solid var(--chrome-line);backdrop-filter:blur(30px) saturate(180%);-webkit-backdrop-filter:blur(30px) saturate(180%);color:var(--text);font-size:12.5px;transition:background .35s,color .35s}
.menubar__left,.menubar__right{display:flex;align-items:center;gap:16px;min-width:0}
.menubar__brand{display:flex;align-items:center;gap:6px;font-weight:750;letter-spacing:-.03em;font-size:13px}
.menubar__divider{display:none;width:1px;height:14px;background:var(--chrome-line)}
.menubar__app{display:none;font-size:13px;font-weight:700;letter-spacing:-.01em;color:var(--text);white-space:nowrap;max-width:340px;overflow:hidden;text-overflow:ellipsis}
body.has-window .menubar__divider,body.has-window .menubar__app{display:inline-block}
body.has-window .menubar__brand [data-site-name]{display:none}
body.has-window .menubar__item{display:none}
.menubar__item{font-size:12.5px;font-weight:500;color:var(--text-2);padding:2px 0;white-space:nowrap;transition:color .2s}
.menubar__item:hover{color:var(--text)}
.menubar__right{display:flex;align-items:center;gap:8px;min-width:0}
.menubar__controls{display:flex;align-items:center;gap:1px;padding:2px;border-radius:8px;background:rgba(127,127,127,.06);transition:background .2s}
.menubar__controls:hover{background:rgba(127,127,127,.1)}
.menubar__lang{display:flex;align-items:center;gap:5px;height:24px;padding:0 7px;border-radius:6px;font-size:11.5px;font-weight:650;color:var(--text-2);transition:background .2s,color .2s}
.menubar__lang svg{width:13px;height:13px}
.menubar__lang:hover{background:rgba(127,127,127,.14);color:var(--text)}
.menubar__icon{width:24px;height:24px;display:grid;place-items:center;color:var(--text-2);border-radius:6px;transition:background .2s,color .2s}
.menubar__icon svg{width:15px;height:15px}
.menubar__icon:hover{background:rgba(127,127,127,.14);color:var(--text)}
.menubar__sep{width:1px;height:14px;flex:none;background:var(--chrome-line);margin:0 2px}
.menubar__status{display:flex;align-items:center;gap:7px;color:var(--text-2);opacity:.85}
.menubar__status svg{height:12px;width:auto;display:block}
.menubar__clock{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;color:var(--text);font-variant-numeric:tabular-nums;background:none;border:0;padding:3px 6px;margin:-3px -6px;border-radius:7px;font-family:inherit;cursor:pointer;-webkit-appearance:none;appearance:none;transition:background .18s}
.menubar__clock:hover{background:rgba(127,127,127,.16)}
.menubar__clock:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.menubar__clock span:first-child{color:var(--text-2);font-weight:500;font-size:11.5px;letter-spacing:.01em}
.menubar__clock i{width:1px;height:10px;display:block;background:var(--chrome-line)}

/* statusbar */
.statusbar{position:fixed;top:0;left:0;right:0;height:calc(54px + env(safe-area-inset-top));z-index:120;display:flex;align-items:center;justify-content:space-between;padding:env(safe-area-inset-top) 22px 0;color:var(--status-fg);pointer-events:none}
.statusbar__left{display:flex;align-items:baseline;gap:8px;min-width:0}
.statusbar__time{font-size:15px;font-weight:700;letter-spacing:-.02em;background:none;border:0;padding:0;color:inherit;font-family:inherit;cursor:pointer;pointer-events:auto;-webkit-appearance:none;appearance:none}
.statusbar__time:hover{opacity:.72}
.statusbar__time:focus-visible{outline:2px solid currentColor;outline-offset:2px;border-radius:4px}
.statusbar__date{font-size:11px;font-weight:500;opacity:.82;white-space:nowrap}
.statusbar__icons{display:flex;align-items:center;gap:5px}
.statusbar__icons svg{height:12px;width:auto}
.statusbar__island{position:absolute;left:50%;top:calc(8px + env(safe-area-inset-top));transform:translateX(-50%);width:96px;height:28px;border-radius:20px;background:#000;box-shadow:0 2px 10px rgba(0,0,0,.25)}
.statusbar__island::before{content:"";position:absolute;right:11px;top:10px;width:8px;height:8px;border-radius:50%;background:#101b1a;box-shadow:inset 0 0 0 1.4px #243d3a}
.statusbar__island i{position:absolute;left:12px;top:12px;width:4px;height:4px;border-radius:50%;background:var(--signal);opacity:.9}
.home-indicator{position:fixed;left:50%;bottom:8px;transform:translateX(-50%);width:126px;height:5px;border-radius:99px;background:var(--homebar);box-shadow:0 1px 6px rgba(0,0,0,.18);z-index:95;display:block}

/* widgets */
.widget{position:relative;border-radius:26px;background:var(--glass);border:1px solid var(--glass-line);backdrop-filter:blur(28px) saturate(180%);-webkit-backdrop-filter:blur(28px) saturate(180%);box-shadow:var(--shadow-soft),inset 0 1px 0 rgba(255,255,255,.34);color:var(--text);overflow:hidden;padding:22px;transition:background .35s,color .35s,border-color .35s}
.widget > *:not(.widget__planet){position:relative;z-index:1}
.widget__top{display:flex;align-items:center;justify-content:space-between;gap:10px;font-family:var(--font-mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--text-2);opacity:.9}
.widget__os{text-transform:none;letter-spacing:.1em}
.widget__live{display:flex;align-items:center;gap:5px;font-size:10px;letter-spacing:.08em;color:var(--text-2)}
.widget__live i{width:5px;height:5px;border-radius:50%;background:var(--signal);box-shadow:0 0 8px rgba(255,122,69,.6);animation:pulse 2.6s infinite}
.widget__word{font-family:var(--font-display);font-size:clamp(2.5rem,4.2vw,3.5rem);font-weight:750;line-height:.82;letter-spacing:-.075em;margin-top:14px;color:var(--text)}
.widget__word.is-cn{letter-spacing:.08em;font-weight:700;line-height:1.05}
.widget--home .widget__word.is-cn{font-size:30px}
.widget__word sup{font-family:var(--font-mono);font-size:.2em;font-weight:500;color:var(--accent);vertical-align:super;letter-spacing:0;margin-left:.06em}
.widget__cn{font-size:13px;letter-spacing:.26em;color:var(--text-2);margin-top:5px}
.widget__tagline{font-family:var(--font-display);font-size:17px;font-weight:550;line-height:1.22;letter-spacing:-.025em;margin-top:16px;max-width:13.5em;color:var(--text);text-wrap:balance}
.widget__meta{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.04em;line-height:1.55;color:var(--text-2);margin-top:13px;max-width:68%}
.widget__hint{position:static;display:flex;align-items:center;gap:6px;max-width:100%;margin-top:9px;font-family:var(--font-mono);font-size:11px;letter-spacing:.02em;color:var(--text-2);z-index:2}
.widget__hint span:last-child{color:var(--accent)}
.widget__planet{position:absolute;right:-30px;bottom:-38px;width:158px;height:158px;border-radius:50%;background:radial-gradient(circle at 34% 28%,#ffd9a0,#ff9a68 48%,#df4d25 100%);box-shadow:0 24px 50px rgba(80,25,10,.28),inset -16px -20px 36px rgba(120,30,5,.25);z-index:0;animation:planetFloat 8s var(--ease-io) infinite}
.widget__planet::before{content:"";position:absolute;left:-22%;top:40%;width:144%;height:30%;border:1px solid rgba(255,255,255,.52);border-radius:50%;transform:rotate(-18deg)}
.widget__planet::after{content:"";position:absolute;left:58%;top:12%;width:12px;height:12px;border-radius:50%;background:#fff;opacity:.65;box-shadow:0 0 20px rgba(255,255,255,.7)}
.widget--system{padding:18px}
.widget__time{font-family:var(--font-display);font-size:34px;font-weight:300;letter-spacing:-.05em;line-height:1;margin-top:9px;color:var(--text);font-variant-numeric:tabular-nums}
.widget__date{font-size:11px;color:var(--text-2);margin-top:2px}
.widget--system .widget__meta{margin-top:10px;font-size:8px}

/* app icons */
.app-icon{position:relative;display:grid;place-items:center;width:var(--icon-size,64px);height:var(--icon-size,64px);flex:none;border-radius:22.5%;background:linear-gradient(145deg,var(--icon-a),var(--icon-b));color:var(--icon-fg);box-shadow:0 8px 18px rgba(10,20,45,.28),inset 0 1px 0 rgba(255,255,255,.38),inset 0 -2px 4px rgba(0,0,0,.12);border:1px solid rgba(255,255,255,.18);overflow:hidden;isolation:isolate}
.app-icon::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.3),rgba(255,255,255,0) 44%,rgba(0,0,0,.05));pointer-events:none;z-index:2}
.app-icon svg{position:relative;z-index:1;width:58%;height:58%;overflow:visible}
.app-icon--hero{--icon-size:76px}
.app-icon--row{--icon-size:38px;border-radius:11px}
.app-icon--custom{background:linear-gradient(145deg,var(--icon-a),var(--icon-b))}
.app-icon--custom img{position:relative;z-index:1;width:100%;height:100%;object-fit:cover;display:block}
.app-icon--custom.is-broken img{display:none}
.app-icon__fallback{position:absolute;inset:0;z-index:0;display:grid;place-items:center;font-family:var(--font-display);font-size:calc(var(--icon-size,64px)*.36);font-weight:750;color:var(--icon-fg);letter-spacing:-.04em;opacity:0}
.app-icon--custom.is-broken .app-icon__fallback{opacity:1}
.app-icon--dock{--icon-size:100%;border-radius:23%}
.app-icon--dy{--icon-a:#4b101b;--icon-b:#942f29;--icon-fg:#f8dca4}
.app-icon--pinyin{--icon-a:#7590ff;--icon-b:#2f4bff;--icon-fg:#ffffff}
.app-icon--abts{--icon-a:#242a36;--icon-b:#0a0d13;--icon-fg:#ff9a6c}
.app-icon--shuaya{--icon-a:#e7ff84;--icon-b:#b7d93f;--icon-fg:#11170a}
.app-icon--hot{--icon-a:#ff956b;--icon-b:#df3a1b;--icon-fg:#fff8f0}
.app-icon--almanac{--icon-a:#fff2d4;--icon-b:#e5cea2;--icon-fg:#a52b20}
.app-icon--about{--icon-a:#232a3c;--icon-b:#0b0e16;--icon-fg:#fff2da}
.app-icon--contact{--icon-a:#a6b6ff;--icon-b:#2f4bff;--icon-fg:#ffffff}
.app-icon--settings{--icon-a:#e4e7ed;--icon-b:#99a3b5;--icon-fg:#252a33}
.app-icon--friends{--icon-a:#68e0d2;--icon-b:#0f6f8c;--icon-fg:#f2ffff}
.app-icon--archive{--icon-a:#93d2ff;--icon-b:#2f7bff;--icon-fg:#ffffff}
.app-icon--theme{--icon-a:#3d4356;--icon-b:#161a26;--icon-fg:#fff5dc}
.app-icon--theme .icon-sun,.app-icon--theme .icon-moon{width:28px;height:28px}

/* desktop */
.desktop{display:none;position:relative;min-height:100vh;min-height:100svh}
.desktop__icons{position:absolute;left:22px;top:52px;display:grid;grid-template-columns:104px;gap:5px;align-items:start;justify-items:center;z-index:2}
.desktop-app{display:flex;flex-direction:column;align-items:center;gap:5px;width:104px;padding:2px;border-radius:10px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.7);transition:color .18s}
.desktop-app .app-icon{--icon-size:62px;transition:transform .18s var(--ease),box-shadow .18s,filter .18s}
.desktop-app:hover .app-icon{transform:translateY(-1px) scale(1.035);filter:brightness(1.06);box-shadow:0 14px 28px rgba(3,10,20,.4),inset 0 1px 0 rgba(255,255,255,.42),inset 0 -2px 4px rgba(0,0,0,.14)}
.desktop-app__label{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:11.5px;font-weight:500;line-height:1.15;text-align:center;max-width:102px;min-height:26px;word-break:break-word;padding:0;border-radius:4px;background:transparent;text-shadow:0 1px 2px rgba(0,0,0,.85),0 0 6px rgba(0,0,0,.45);transition:background .18s,color .18s,text-shadow .18s}
.desktop-app:hover .desktop-app__label{background:transparent}
.desktop-app:focus-visible .desktop-app__label{background:var(--accent);color:#fff;text-shadow:none;padding:1px 5px}
.desktop-app:focus-visible{outline:none}
.desktop-app.is-open .desktop-app__label{background:transparent}
@media (min-width:1180px) and (max-height:880px){
  .desktop__icons{grid-template-columns:repeat(2,104px);gap:14px 18px}
}

/* home */
.home{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;padding:calc(54px + 18px + env(safe-area-inset-top)) 20px 154px;min-height:100vh;min-height:100svh;align-content:start;position:relative}
.home__grid{display:contents}
.home-app{display:flex;flex-direction:column;align-items:center;gap:7px;padding:4px 2px;border-radius:16px;color:var(--icon-label);text-shadow:var(--icon-shadow);transition:transform .18s var(--ease),background .18s;min-width:0}
.home-app .app-icon{--icon-size:58px;transition:transform .18s var(--ease)}
.home-app__label{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:12px;font-weight:500;line-height:1.22;text-align:center;max-width:88px;min-height:30px;word-break:break-word;padding:1px 4px;border-radius:5px;background:transparent;border:0;transition:background .18s,color .18s}
.home-app:hover .home-app__label{background:rgba(15,22,40,.28)}
.home-app:focus-visible .home-app__label{background:var(--accent);color:#fff;text-shadow:none}
.home-app:focus-visible{outline:none}
.home-app:active{transform:scale(.94);background:rgba(255,255,255,.12)}
.widget--home{grid-column:1/-1;height:auto;min-height:240px;padding:18px 18px 24px}
.widget--home .widget__word{font-size:34px}
.widget--home .widget__cn{font-size:12px;letter-spacing:.24em;margin-top:3px}
.widget--home .widget__tagline{font-size:13.5px;margin-top:11px;max-width:25ch;line-height:1.25}
.widget--home .widget__meta{font-size:12px;margin-top:8px}
.widget--home .widget__hint{font-size:12px}
.widget--home .widget__planet{width:112px;height:112px;right:-22px;bottom:-30px}
.widget--home .widget__top{font-size:10.5px}
.widget--tablet{display:none}

/* dock */
.dock{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);z-index:80;display:flex;align-items:flex-end;gap:10px;padding:8px 12px;border-radius:24px;background:linear-gradient(180deg,rgba(255,255,255,.5),rgba(255,255,255,.28));border:1px solid rgba(255,255,255,.62);box-shadow:0 24px 60px rgba(15,25,55,.26),inset 0 1px 0 rgba(255,255,255,.8),inset 0 -1px 0 rgba(0,0,0,.07);backdrop-filter:blur(36px) saturate(190%);-webkit-backdrop-filter:blur(36px) saturate(190%);transition:background .35s,border-color .35s}
html[data-theme="dark"] .dock{background:linear-gradient(180deg,rgba(46,50,64,.62),rgba(18,21,31,.52));border-color:rgba(255,255,255,.16);box-shadow:0 26px 70px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.15),inset 0 -1px 0 rgba(0,0,0,.25)}
.dock__item{position:relative;width:54px;height:54px;border-radius:13px;display:grid;place-items:center;transition:transform .2s var(--ease);transform-origin:bottom center}
.dock__item .app-icon{width:54px;height:54px;--icon-size:54px}
.dock__item:hover{transform:translateY(-13px) scale(1.24);z-index:3}
.dock__item:has(+ .dock__item:hover),.dock__item:hover + .dock__item{transform:translateY(-6px) scale(1.1);z-index:2}
.dock__item.is-open::after{content:"";position:absolute;left:50%;bottom:-7px;width:4px;height:4px;border-radius:50%;background:var(--text);transform:translateX(-50%);opacity:.7}
.dock__item.is-minimized::after{opacity:.35;width:3px;height:3px}
.dock__label{position:absolute;left:50%;bottom:calc(100% + 11px);transform:translate(-50%,4px);padding:5px 9px;border-radius:7px;background:var(--menu-bg);border:1px solid var(--glass-line);color:var(--text);font-size:12px;line-height:1;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;text-shadow:none;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 6px 18px rgba(15,25,55,.18)}
.dock__item:hover .dock__label{opacity:1;transform:translate(-50%,0)}
.dock__sep{width:1px;height:34px;background:var(--chrome-line);margin:0 2px 4px;flex:none}
.dock__sep--touch{display:none}
.dock__item--project{display:grid}
@media (max-width:1179px){.dock__item--project{display:none}}

/* language popover */
.lang-popover{position:fixed;top:36px;right:14px;z-index:140;width:390px;padding:10px;border-radius:14px;background:var(--glass-strong);border:1px solid var(--glass-line);box-shadow:var(--shadow);backdrop-filter:blur(34px) saturate(180%);-webkit-backdrop-filter:blur(34px) saturate(180%);color:var(--text)}
.lang-popover__head{display:flex;justify-content:space-between;align-items:center;padding:4px 7px 10px;color:var(--text-2);border-bottom:1px solid var(--line);margin-bottom:6px}
.lang-popover__grid{display:grid;grid-template-columns:1fr 1fr;gap:2px}
.lang-popover__grid button{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 9px;border-radius:8px;font-size:12.5px;text-align:left;color:var(--text);transition:background .18s,color .18s}
.lang-popover__grid button:hover{background:var(--surface-2)}
.lang-popover__grid button[aria-checked="true"]{color:var(--accent);font-weight:700}
.lang-popover__grid span:last-child{font-family:var(--font-mono);font-size:9.5px;color:var(--text-2);letter-spacing:.04em}
.lang-popover__grid button[aria-checked="true"] span:last-child{color:var(--accent)}

/* app layer / window / sheet / app view */
.app-layer{position:fixed;inset:0;z-index:150;pointer-events:none}
.app-layer[hidden]{display:none}
.app-layer.is-open{pointer-events:none}
.app-backdrop{position:absolute;inset:0;background:rgba(8,12,24,.2);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);opacity:0;transition:opacity .3s var(--ease)}
.app-layer.is-open .app-backdrop{opacity:1}
.app-panel{position:fixed;z-index:2;display:flex;flex-direction:column;overflow:hidden;background:var(--window-bg);color:var(--text);box-shadow:var(--shadow);border:1px solid var(--line);pointer-events:auto;opacity:0;transform:translateY(100%);transition:transform .45s var(--ease),opacity .3s var(--ease),border-radius .3s}
.app-layer.is-open .app-panel{transform:none;opacity:1}
.app-panel:focus,.app-panel:focus-visible{outline:none}
.app-panel__bar{position:relative;z-index:5;flex:none;height:54px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:0 14px;background:var(--window-bar);border-bottom:1px solid var(--line);backdrop-filter:blur(26px) saturate(180%);-webkit-backdrop-filter:blur(26px) saturate(180%);color:var(--text)}
.app-panel__status{display:none;position:relative;z-index:5;flex:none;height:34px;align-items:center;justify-content:space-between;padding:0 22px;background:var(--window-bg);color:var(--text);font-size:14px;font-weight:700;letter-spacing:-.02em}
.app-panel__status-time{background:none;border:0;padding:0;color:inherit;font-family:inherit;font-size:14px;font-weight:700;letter-spacing:-.02em;cursor:pointer;pointer-events:auto;-webkit-appearance:none;appearance:none}
.app-panel__status-time:focus-visible{outline:2px solid currentColor;outline-offset:2px;border-radius:4px}
.app-panel__island{position:absolute;left:50%;top:calc(5px + env(safe-area-inset-top));transform:translateX(-50%);width:86px;height:24px;border-radius:16px;background:#000;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.app-panel__island::before{content:"";position:absolute;right:10px;top:8px;width:8px;height:8px;border-radius:50%;background:#101b1a;box-shadow:inset 0 0 0 1.3px #243d3a}
.app-panel__island i{position:absolute;left:11px;top:10px;width:4px;height:4px;border-radius:50%;background:var(--signal)}
.app-panel__status-icons{display:flex;align-items:center;gap:5px}
.app-panel__status-icons svg{height:11px;width:auto}
.app-panel__title{font-size:13.5px;font-weight:650;letter-spacing:-.01em;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.app-panel__back{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--line);color:var(--text)}
.app-panel__back svg{width:18px;height:18px}
.app-panel__done{font-size:13px;font-weight:650;color:var(--accent);padding:6px 8px;border-radius:9px;justify-self:end}
.app-panel__done:hover{background:var(--surface-2)}
.window-controls{display:none;align-items:center;gap:8px;grid-column:1;grid-row:1}
.app-panel__back{grid-column:1;grid-row:1}
.app-panel__title{grid-column:2;grid-row:1}
.app-panel__done{grid-column:3;grid-row:1;justify-self:end}
.tl{position:relative;width:12px;height:12px;border-radius:50%;padding:0;flex:none}
.tl span{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--font-mono);font-size:9px;line-height:1;color:rgba(0,0,0,.6);opacity:0;transition:opacity .15s}
.window-controls:hover .tl span{opacity:1}
.tl--close{background:#ff5f57}.tl--min{background:#febc2e}.tl--zoom{background:#28c840}
.tl--close span::before{content:"×"}
.tl--min span::before{content:"−"}
.tl--zoom span::before{content:"+"}
.app-panel__grabber{display:none;position:absolute;left:50%;top:6px;transform:translateX(-50%);width:38px;height:5px;border-radius:99px;background:var(--line-strong);opacity:.55}
.app-panel__homebar{display:none;position:absolute;left:50%;bottom:8px;transform:translateX(-50%);width:120px;height:5px;border-radius:99px;background:var(--text);opacity:.45;z-index:6;pointer-events:none}
.app-panel__scroll{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:14px 16px calc(38px + env(safe-area-inset-bottom));background:var(--window-bg);-webkit-overflow-scrolling:touch}
.app-panel.is-almanac .app-panel__scroll{padding:0;overflow:hidden;background:var(--window-bg)}
.app-content{max-width:640px;margin:0 auto}

/* app content */
.app-hero{position:relative;display:flex;align-items:center;gap:14px;padding:18px;border-radius:20px;background:linear-gradient(135deg,var(--app-tint,rgba(47,75,255,.12)),transparent 74%);border:1px solid var(--line);overflow:hidden}
.app-hero__text{min-width:0;flex:1}
.app-hero h2{font-family:var(--font-display);font-size:26px;font-weight:700;line-height:1.1;letter-spacing:-.04em}
.app-hero__latin{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:var(--text-2);margin-top:4px}
.app-live{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:4px 8px;border-radius:99px;background:var(--surface);border:1px solid var(--line);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-2)}
.app-live i{width:5px;height:5px;border-radius:50%;background:var(--signal);box-shadow:0 0 8px rgba(255,122,69,.6);animation:pulse 2.6s infinite}
.app-desc{font-size:15.5px;line-height:1.7;color:var(--text-2);margin-top:18px}
.app-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}
.app-tags li{padding:5px 9px;border:1px solid var(--line);border-radius:99px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.02em;color:var(--text-2);background:var(--surface)}
.friends-list{display:flex;flex-direction:column;gap:8px;margin-top:18px}
.friend-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto 16px;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);transition:border-color .2s,transform .2s,background .2s}
.friend-row:hover{border-color:var(--accent);transform:translateY(-1px)}
.friend-icon{position:relative;width:40px;height:40px;flex:none;display:grid;place-items:center;overflow:hidden;border-radius:11px;color:#fff;font-weight:750;font-size:16px;background:linear-gradient(145deg,hsl(var(--friend-hue,200) 72% 60%),hsl(var(--friend-hue,200) 72% 34%));box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 4px 10px rgba(0,0,0,.2)}
.friend-icon img{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:cover}
.friend-icon.is-broken img{display:none}
.friend-icon__letter{position:relative;z-index:0;opacity:0}
.friend-icon.is-broken .friend-icon__letter{opacity:1}
.friend-row__text{min-width:0}
.friend-row__text b{display:block;font-size:14px;font-weight:650;line-height:1.3;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.friend-row__text small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:11.5px;line-height:1.45;color:var(--muted);margin-top:2px}
.friend-row__host{font-family:var(--font-mono);font-size:9.5px;color:var(--muted);white-space:nowrap}
.friend-row__arrow{color:var(--accent);font-size:14px;text-align:right}
.app-meta{display:grid;grid-template-columns:auto 1fr;gap:8px 18px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line);font-size:12.5px}
.app-meta dt{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding-top:2px}
.app-meta dd{color:var(--text);min-width:0;overflow-wrap:break-word}
.app-meta a{color:var(--accent);border-bottom:1px solid currentColor}
.app-cta{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:20px;padding:14px 16px;border-radius:14px;background:var(--accent);color:var(--on-accent);font-size:14px;font-weight:700;transition:transform .2s var(--ease),filter .2s}
.app-cta:hover{transform:translateY(-1px);filter:brightness(1.05)}
.app-cta__arrow{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--on-accent);color:var(--accent);font-size:13px}
.app-note{font-family:var(--font-mono);font-size:10px;letter-spacing:.03em;line-height:1.6;color:var(--muted);margin-top:14px}
.app-section{margin-top:26px;padding-top:20px;border-top:1px solid var(--line)}
.app-section__label{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}

/* about app */
.about-app__headline{font-family:var(--font-display);font-size:34px;font-weight:700;line-height:1.05;letter-spacing:-.045em;margin-top:20px;max-width:13ch}
.about-app__headline em{font-style:normal;color:var(--accent)}
.about-app__copy{display:flex;flex-direction:column;gap:14px;margin-top:16px}
.about-app__copy p{font-size:14.5px;line-height:1.72;color:var(--text-2)}
.about-app__copy p:first-child{color:var(--text)}
.about-app__sig{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--accent)}
.about-app__principles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:22px}
.about-app__principle{padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.about-app__principle span{font-family:var(--font-mono);font-size:10px;color:var(--accent)}
.about-app__principle h3{font-size:14px;font-weight:700;margin-top:7px}
.about-app__principle p{font-size:12.5px;line-height:1.55;color:var(--text-2);margin-top:5px}
.about-app__stats{display:flex;gap:26px;margin-top:22px;padding-top:16px;border-top:1px solid var(--line);flex-wrap:wrap}
.about-app__stat strong{display:block;font-family:var(--font-display);font-size:28px;font-weight:300;line-height:1}
.about-app__stat span{display:block;font-family:var(--font-mono);font-size:9px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-top:4px}
.about-app__status{display:flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:10px;color:var(--text-2);margin-top:14px}
.about-app__status i{width:6px;height:6px;border-radius:50%;background:var(--signal)}

/* contact app */
.contact-app__headline{font-family:var(--font-display);font-size:36px;font-weight:700;line-height:1.02;letter-spacing:-.05em;margin-top:18px}
.contact-app__headline em{font-style:normal;color:var(--accent)}
.contact-app__desc{font-size:15px;line-height:1.7;color:var(--text-2);margin-top:14px;max-width:46ch}

/* settings */
.settings__group{margin-top:24px}
.settings__group:first-child{margin-top:0}
.settings__group h3{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.08em;color:var(--muted);margin-bottom:9px}
.settings__card{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.settings__row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 14px;border-bottom:1px solid var(--line);font-size:13.5px}
.settings__row:last-child{border-bottom:0}
.settings__row small{font-size:11px;color:var(--muted)}
.segmented{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:4px;background:var(--surface);border:1px solid var(--line);border-radius:13px}
.segmented button{display:flex;align-items:center;justify-content:center;gap:7px;padding:10px 8px;border-radius:10px;font-size:12.5px;font-weight:600;color:var(--text-2);transition:background .2s,color .2s}
.segmented button svg{width:16px;height:16px}
.segmented button[aria-pressed="true"]{background:var(--accent);color:var(--on-accent)}
.settings__languages{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.settings__lang{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-size:12.5px;color:var(--text);text-align:left;transition:border-color .2s,background .2s,color .2s}
.settings__lang:hover{border-color:var(--accent)}
.settings__lang[aria-pressed="true"]{border-color:var(--accent);color:var(--accent);font-weight:700}
.settings__lang span:last-child{font-family:var(--font-mono);font-size:9px;color:var(--muted)}
.settings__lang[aria-pressed="true"] span:last-child{color:var(--accent)}
.settings__meta{font-family:var(--font-mono);font-size:10.5px;line-height:1.7;color:var(--muted)}
.settings-wallpaper-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.settings-wallpaper{display:flex;flex-direction:column;gap:7px;padding:8px;border:1.5px solid var(--line);border-radius:12px;background:var(--surface);text-align:left;font-size:12px;font-weight:600;color:var(--text-2);transition:border-color .2s,color .2s,transform .2s}
.settings-wallpaper:hover{border-color:var(--accent);transform:translateY(-1px)}
.settings-wallpaper[aria-pressed="true"]{border-color:var(--accent);color:var(--accent)}
.settings-wallpaper__swatch{height:56px;border-radius:8px}
.settings-wallpaper-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:9px}
.settings-hint{flex:1;font-family:var(--font-mono);font-size:9.5px;line-height:1.5;color:var(--muted)}

/* archive */
.archive__head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-top:18px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.archive__head h2{font-family:var(--font-display);font-size:32px;font-weight:700;letter-spacing:-.045em}
.archive__head span{font-family:var(--font-mono);font-size:10px;color:var(--muted)}
.archive__list{display:flex;flex-direction:column;margin-top:6px}
.archive__row{display:grid;grid-template-columns:38px 1fr auto auto 16px;align-items:center;gap:12px;padding:10px 6px;border-bottom:1px solid var(--line);text-align:left;border-radius:8px;transition:background .18s}
.archive__row:hover{background:var(--surface-2)}
.archive__row .app-icon{--icon-size:38px}
.archive__name{min-width:0}
.archive__name b{display:block;font-size:14px;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.archive__name small{display:block;font-family:var(--font-mono);font-size:9px;color:var(--muted);letter-spacing:.04em;margin-top:2px}
.archive__type{font-family:var(--font-mono);font-size:9px;letter-spacing:.02em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.archive__live{display:flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:9px;text-transform:uppercase;color:var(--text-2)}
.archive__live i{width:5px;height:5px;border-radius:50%;background:var(--signal)}
.archive__arrow{color:var(--muted);font-size:14px}
.archive__note{font-family:var(--font-mono);font-size:9.5px;color:var(--muted);margin-top:14px;line-height:1.6}

/* ---------- desktop windows ---------- */
.window-layer{position:fixed;inset:0;z-index:170;pointer-events:none}
.window{position:fixed;display:flex;flex-direction:column;overflow:hidden;width:min(720px,calc(100vw - 240px));max-height:78vh;background:var(--window-bg);border:1px solid var(--glass-line);border-radius:16px;box-shadow:0 40px 110px rgba(5,12,30,.42),inset 0 1px 0 rgba(255,255,255,.12);pointer-events:auto;opacity:0;transform:scale(.97);transition:opacity .18s var(--ease),transform .18s var(--ease),left .22s var(--ease),top .22s var(--ease),width .28s var(--ease),height .28s var(--ease);will-change:transform,left,top}
.window.is-open{opacity:1;transform:none}
.window.is-closing{opacity:0;transform:scale(.96)}
.window.is-dragging{transition:none!important}
.window.is-minimizing{transform:translate(var(--min-x),var(--min-y)) scale(var(--min-s));opacity:0;border-radius:40px;transition:transform .5s var(--ease),opacity .45s var(--ease),border-radius .5s var(--ease)}
.window.is-minimized{display:none}
.window__bar{height:44px;grid-template-columns:1fr auto 1fr;background:var(--window-bar);padding:0 14px;cursor:grab;user-select:none}
.window__bar:active{cursor:grabbing}
.window__title{grid-column:2;grid-row:1;font-size:13px;font-weight:650;letter-spacing:-.01em;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;color:var(--text)}
.window .window-controls{display:flex;justify-self:start}
.window__body{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:28px 32px 32px;background:var(--window-bg);-webkit-overflow-scrolling:touch}
.window--almanac .window__body{padding:0;overflow:hidden;background:var(--window-bg)}
.almanac-embed{width:100%;height:100%;overflow:hidden;background:transparent}
.almanac-embed iframe{display:block;width:100%;height:100%;border:0;background:transparent}
.window:not(.is-active){box-shadow:0 22px 65px rgba(5,12,30,.28),inset 0 1px 0 rgba(255,255,255,.08)}
.window:focus,.window:focus-visible{outline:none}
.window:not(.is-active) .tl{filter:grayscale(1);opacity:.62}
.window:not(.is-active) .window__title{opacity:.72}
.window.is-zoomed{border-radius:18px}
.window .app-content{max-width:640px;margin:0 auto}

/* ---------- wallpaper image + presets ---------- */
.wallpaper__image{position:absolute;inset:0;z-index:1;background-size:cover;background-position:center;opacity:0;transition:opacity .45s var(--ease)}
.wallpaper.has-image .wallpaper__image{opacity:1}
.wallpaper.has-image .wallpaper__base,.wallpaper.has-image .wallpaper__blob,.wallpaper.has-image .wallpaper__orbit{opacity:0;transition:opacity .4s}
html[data-wallpaper="goldfish"]{
  --wall-base:radial-gradient(120% 100% at 74% 16%,#0e6472 0%,#083f4f 30%,#042533 58%,#02131d 100%);
  --blob-1:#0f7f88;--blob-2:#0a4b78;--blob-3:#0b5a55;--blob-4:#126d75;
  --orbit-line:rgba(170,255,245,.08);
  --grain-opacity:.055;
  --vignette:radial-gradient(ellipse at 70% 35%,rgba(0,0,0,0) 30%,rgba(0,0,0,.32) 100%),linear-gradient(180deg,rgba(1,12,18,.34),transparent 18%,transparent 78%,rgba(1,12,18,.55));
}
html[data-wallpaper="goldfish"] .wallpaper__blob{filter:blur(88px);opacity:.55}
html[data-wallpaper="earth"]{
  --wall-base:radial-gradient(120% 100% at 72% 28%,#0b1b36 0%,#050b1a 42%,#010208 100%);
  --blob-1:#0b2f5e;--blob-2:#122a58;--blob-3:#25133c;--blob-4:#062a40;
  --orbit-line:transparent;
  --grain-opacity:.02;
  --vignette:radial-gradient(ellipse at 70% 38%,rgba(0,0,0,0) 34%,rgba(0,0,0,.5) 100%),linear-gradient(180deg,rgba(0,2,8,.45),transparent 20%,transparent 78%,rgba(0,2,8,.6));
}
html[data-wallpaper="earth"] .wallpaper__blob{filter:blur(110px);opacity:.5}
/* Neutral first paint while the real wallpaper is resolved from cache/API. */
html[data-wallpaper="pending"]{
  --wall-base:radial-gradient(120% 100% at 74% 16%,#0c3140 0%,#07222d 36%,#03121b 72%,#01080d 100%);
  --blob-1:#0e6b74;--blob-2:#0a4b78;--blob-3:#0b5a55;--blob-4:#126d75;
  --orbit-line:rgba(170,255,245,.08);
  --grain-opacity:.04;
  --vignette:radial-gradient(ellipse at 70% 35%,rgba(0,0,0,0) 30%,rgba(0,0,0,.34) 100%),linear-gradient(180deg,rgba(1,12,18,.36),transparent 18%,transparent 78%,rgba(1,12,18,.56));
}
html[data-wallpaper="pending"] .wallpaper__blob,
html[data-wallpaper="pending"] .wallpaper__orbit,
html[data-wallpaper="pending"] .wallpaper__scene::before{display:none}
html[data-wallpaper="pending"] .wallpaper__scene{opacity:1}
/* Cached image wallpapers are painted before the JS bundle runs. */
html[data-wallpaper-mode="image"] .wallpaper__image{opacity:1;background-image:var(--wp-image)}
html[data-wallpaper-mode="image"] .wallpaper__base,
html[data-wallpaper-mode="image"] .wallpaper__blob,
html[data-wallpaper-mode="image"] .wallpaper__orbit,
html[data-wallpaper-mode="image"] .wallpaper__scene{opacity:0}
html[data-wallpaper-mode="image"] .wallpaper__caustics,
html[data-wallpaper-mode="image"] .wallpaper__rays,
html[data-wallpaper-mode="image"] .wallpaper__stars{display:none}
html[data-scene]{--menu-bg:rgba(5,20,28,.62);--glass-line:rgba(255,255,255,.16)}
html[data-theme="light"][data-scene] .widget{background:linear-gradient(180deg,rgba(250,254,255,.88),rgba(235,249,253,.74));border-color:rgba(255,255,255,.7);box-shadow:0 18px 50px rgba(0,10,18,.3),inset 0 1px 0 rgba(255,255,255,.7)}
html[data-scene] .wallpaper__orbit{display:none}
html[data-scene] .wallpaper__scene{opacity:1}
.wallpaper__scene{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .9s var(--ease);overflow:hidden}
.wallpaper__scene::before{content:"";position:absolute;right:2%;top:10%;width:66%;height:78%;border-radius:50%;background:radial-gradient(circle,rgba(58,190,196,.2),rgba(20,110,130,.08) 46%,transparent 70%);filter:blur(40px)}
html[data-scene="earth"] .wallpaper__scene::before{background:radial-gradient(circle,rgba(70,126,255,.24),rgba(24,50,120,.1) 46%,transparent 70%)}
.wallpaper__scene-stage{position:absolute;right:-1vw;top:0;width:min(62vw,1060px);height:100%}
.wallpaper.has-image .wallpaper__caustics,.wallpaper.has-image .wallpaper__rays,.wallpaper.has-image .wallpaper__stars{display:none}
.wallpaper.has-image .wallpaper__scene{opacity:0}
html:not([data-wallpaper="goldfish"]) .wallpaper__caustics,html:not([data-wallpaper="goldfish"]) .wallpaper__rays{display:none}
.wallpaper__stars{position:absolute;inset:0;z-index:0;pointer-events:none;opacity:0;transition:opacity .8s var(--ease);background-image:
  radial-gradient(1.2px 1.2px at 8% 12%,rgba(255,255,255,.9),transparent 55%),
  radial-gradient(1.8px 1.8px at 22% 34%,rgba(190,220,255,.8),transparent 58%),
  radial-gradient(1px 1px at 34% 8%,rgba(255,255,255,.7),transparent 55%),
  radial-gradient(2px 2px at 46% 26%,rgba(220,235,255,.85),transparent 60%),
  radial-gradient(1.1px 1.1px at 58% 52%,rgba(255,255,255,.65),transparent 55%),
  radial-gradient(1.5px 1.5px at 66% 18%,rgba(180,215,255,.8),transparent 58%),
  radial-gradient(1px 1px at 74% 42%,rgba(255,255,255,.7),transparent 55%),
  radial-gradient(1.7px 1.7px at 84% 64%,rgba(210,230,255,.85),transparent 60%),
  radial-gradient(1.1px 1.1px at 92% 28%,rgba(255,255,255,.7),transparent 55%),
  radial-gradient(1.3px 1.3px at 14% 72%,rgba(200,225,255,.7),transparent 58%),
  radial-gradient(1px 1px at 28% 88%,rgba(255,255,255,.6),transparent 55%),
  radial-gradient(1.6px 1.6px at 42% 64%,rgba(220,236,255,.8),transparent 58%),
  radial-gradient(1px 1px at 54% 84%,rgba(255,255,255,.7),transparent 55%),
  radial-gradient(1.4px 1.4px at 68% 76%,rgba(190,220,255,.7),transparent 58%),
  radial-gradient(1px 1px at 78% 92%,rgba(255,255,255,.6),transparent 55%),
  radial-gradient(1.8px 1.8px at 88% 8%,rgba(255,245,220,.8),transparent 60%);
  background-size:820px 580px;background-repeat:repeat;animation:starDrift 90s linear infinite}
html[data-wallpaper="earth"] .wallpaper__stars{opacity:.72}
html:not([data-wallpaper="earth"]) .wallpaper__stars{display:none}
@keyframes starDrift{from{background-position:0 0}to{background-position:-120px 70px}}
html[data-scene] .menubar{color:#f2fbff}
html[data-scene] .menubar__controls{background:rgba(255,255,255,.07)}
html[data-scene] .menubar__controls:hover{background:rgba(255,255,255,.12)}
html[data-scene] .menubar__app{color:#f2fbff}
html[data-scene] .menubar__item,html[data-scene] .menubar__lang,html[data-scene] .menubar__icon,html[data-scene] .menubar__status,html[data-scene] .menubar__clock span:first-child{color:#b7d6df}
html[data-scene] .menubar__item:hover,html[data-scene] .menubar__lang:hover,html[data-scene] .menubar__icon:hover{color:#ffffff}
html[data-scene] .menubar__icon:hover{background:rgba(255,255,255,.12)}
html[data-scene] .menubar__clock{color:#f2fbff}
html[data-scene] .menubar__divider{background:rgba(255,255,255,.16)}
html[data-scene] .menubar__sep,html[data-scene] .menubar__clock i{background:rgba(255,255,255,.16)}
html[data-scene] .dock{background:linear-gradient(180deg,rgba(34,78,88,.52),rgba(3,16,24,.6));border-color:rgba(255,255,255,.18);box-shadow:0 26px 70px rgba(0,0,0,.46),inset 0 1px 0 rgba(255,255,255,.18),inset 0 -1px 0 rgba(0,0,0,.25)}
html[data-scene="earth"] .dock{background:linear-gradient(180deg,rgba(26,38,72,.55),rgba(2,6,16,.66));border-color:rgba(180,205,255,.18)}
html[data-scene] .dock__label{background:rgba(5,20,28,.88);border-color:rgba(255,255,255,.16);color:#f2fbff}
html[data-scene] .dock__item.is-open::after{background:#dff9ff}
html[data-scene] .statusbar{color:#eefbff}
html[data-scene] .home-indicator{background:rgba(255,255,255,.78)}
@media (max-width:1179px){.wallpaper__scene{display:none}}

/* ---------- menubar admin ---------- */
.menubar__admin{position:relative}
.menubar__admin .icon-admin{display:none}
.menubar__admin .icon-lock{display:block}
body.is-admin .menubar__admin .icon-lock{display:none}
body.is-admin .menubar__admin .icon-admin{display:block}
body.is-admin .menubar__admin::after{content:"";position:absolute;right:2px;bottom:2px;width:5px;height:5px;border-radius:50%;background:var(--signal);box-shadow:0 0 7px rgba(255,122,69,.7)}

/* ---------- admin app ---------- */
.app-icon--admin{--icon-a:#9b8cff;--icon-b:#4a2bd8;--icon-fg:#fff8ec}
.admin{max-width:660px}
.admin-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding-bottom:14px;border-bottom:1px solid var(--line);margin-top:14px}
.admin-kicker{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:var(--muted)}
.admin-head h2{font-family:var(--font-display);font-size:26px;font-weight:700;letter-spacing:-.04em;margin-top:4px}
.admin-logout,.admin-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px 11px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);font-size:12px;font-weight:600;line-height:1;transition:border-color .2s,background .2s,color .2s}
.admin-btn:hover,.admin-logout:hover{border-color:var(--accent);color:var(--accent)}
.admin-btn--primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.admin-btn--primary:hover{background:transparent;color:var(--accent)}
.admin-btn--danger{color:#e23a2e;border-color:rgba(226,58,46,.35)}
.admin-btn--danger:hover{background:#e23a2e;border-color:#e23a2e;color:#fff}
.admin-tabs{display:flex;gap:4px;padding:4px;background:var(--surface-2);border:1px solid var(--line);border-radius:11px;margin:16px 0}
.admin-tabs button{flex:1;padding:8px 6px;border-radius:7px;font-size:12.5px;font-weight:650;color:var(--text-2)}
.admin-tabs button[aria-selected="true"]{background:var(--accent);color:var(--on-accent)}
.admin-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;margin:14px 0}
.admin-toolbar__left{display:flex;gap:8px;flex-wrap:wrap}
.admin-note{font-family:var(--font-mono);font-size:10.5px;line-height:1.65;color:var(--muted);margin-top:12px}
.admin-grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.admin-field{display:flex;flex-direction:column;gap:5px;min-width:0}
.admin-field--full{grid-column:1/-1}
.admin-field label,.admin-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.05em;color:var(--muted)}
.admin-field input,.admin-field select,.admin-field textarea{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);font-family:var(--font-body);font-size:13px;line-height:1.4}
.admin-field input[type="color"]{height:38px;padding:3px;cursor:pointer}
.admin-field input[type="color"]::-webkit-color-swatch-wrapper{padding:0}
.admin-field input[type="color"]::-webkit-color-swatch{border:0;border-radius:5px}
.admin-field textarea{min-height:92px;resize:vertical}
.admin-field input:focus,.admin-field select:focus,.admin-field textarea:focus{outline:2px solid var(--accent);outline-offset:1px}
.admin-check{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--text-2)}
.admin-field label.admin-check{font-family:var(--font-body);font-size:12.5px;letter-spacing:0;text-transform:none}
.admin-check input{width:auto}
.admin-form{display:grid;gap:12px;margin-top:14px}
.admin-form__actions{display:flex;gap:8px;justify-content:flex-end;margin-top:4px}
.admin-tags{display:flex;flex-wrap:wrap;gap:6px}
.admin-tags label{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border:1px solid var(--line);border-radius:99px;font-family:var(--font-body);font-size:11.5px;letter-spacing:0;color:var(--text-2);background:var(--surface)}
.admin-tag-option{white-space:nowrap}
.admin-tag-option span{white-space:nowrap;overflow:visible;text-overflow:clip}
.admin-tag-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 2px;border-bottom:1px solid var(--line)}
.admin-tag-row__name{min-width:0}
.admin-tag-row__name b{display:block;font-size:13.5px;line-height:1.3;white-space:normal;word-break:break-word}
.admin-tag-row__name small{display:block;font-family:var(--font-mono);font-size:9px;color:var(--muted);margin-top:2px;white-space:normal;word-break:break-word}
.admin-tags input{accent-color:var(--accent)}
.admin-list{display:flex;flex-direction:column;margin-top:10px;border-top:1px solid var(--line)}
.admin-app-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 2px;border-bottom:1px solid var(--line)}
.admin-app-row .app-icon{--icon-size:36px}
.admin-app-row__name{min-width:0}
.admin-app-row__name b{display:block;font-size:13.5px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-app-row__name small{display:block;font-family:var(--font-mono);font-size:9px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.admin-app-row__actions{display:flex;gap:5px}
.admin-app-row__actions button{font-size:10.5px;padding:5px 7px}
.admin-link-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 2px;border-bottom:1px solid var(--line)}
.admin-link-row .friend-icon{width:36px;height:36px;border-radius:10px;font-size:14px}
.admin-icon-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.admin-icon-row input{flex:1;min-width:160px}
.admin-icon-preview{flex:none;display:grid;place-items:center;min-width:38px}
.admin-icon-preview .app-icon{--icon-size:38px}
.admin-icon-preview .friend-icon{width:38px;height:38px}
.wp-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-top:4px}
.wp-card{display:flex;flex-direction:column;gap:6px;padding:7px;border:1.5px solid var(--line);border-radius:10px;background:var(--surface);text-align:left;font-size:11px;color:var(--text-2)}
.wp-card[aria-pressed="true"]{border-color:var(--accent);color:var(--accent)}
.wp-card__swatch{height:46px;border-radius:7px;background:linear-gradient(135deg,#ffb38a,#8ea8ff 55%,#ffd4e2)}
.wp-card__swatch[data-preset="goldfish"]{background:radial-gradient(120% 100% at 70% 18%,#0e6472 0%,#083f4f 42%,#02131d 100%)}
.wp-card__swatch[data-preset="earth"]{background:radial-gradient(circle at 66% 50%,#4b93e6 0 10px,#1b4c80 15px,rgba(4,10,24,.8) 28px,#030712 100%)}
.wp-image-row{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:8px;align-items:center;margin-top:8px}
.wp-image-row__label{font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;color:var(--muted)}
.wp-image-row input{width:100%;padding:8px 9px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--text);font-size:11.5px}
.wp-upload{font-size:10.5px;padding:6px 8px}
.wp-preview{display:none;grid-column:1/-1;height:38px;border-radius:7px;background-size:cover;background-position:center;border:1px solid var(--line);margin-top:6px}
.wp-preview[style*="background-image"]{display:block}
.admin-status{display:flex;flex-direction:column;gap:9px;margin-top:16px}
.admin-status__row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-size:12.5px}
.admin-status__row span:last-child{font-family:var(--font-mono);font-size:11px;color:var(--muted)}

/* ---------- login ---------- */
.login-layer{position:fixed;inset:0;z-index:260;display:grid;place-items:center;padding:20px}
.login-layer[hidden]{display:none!important}
.login-backdrop{position:absolute;inset:0;background:rgba(6,10,20,.34);backdrop-filter:blur(30px) saturate(120%);-webkit-backdrop-filter:blur(30px) saturate(120%)}
.login-card{position:relative;z-index:1;width:min(380px,92vw);padding:30px 28px 22px;border-radius:24px;background:var(--glass-strong);border:1px solid var(--glass-line);box-shadow:0 40px 120px rgba(5,12,30,.45),inset 0 1px 0 rgba(255,255,255,.4);backdrop-filter:blur(50px) saturate(160%);-webkit-backdrop-filter:blur(50px) saturate(160%);color:var(--text);text-align:center}
.login-avatar{width:76px;height:76px;margin:0 auto 14px;border-radius:23px;display:grid;place-items:center;background:linear-gradient(145deg,#1b2b44,#07111f);color:#fff8ec;box-shadow:0 14px 30px rgba(8,18,38,.4),inset 0 1px 0 rgba(255,255,255,.18)}
.login-avatar svg,.login-avatar img{width:66%;height:66%;display:block}
.login-card h2{font-family:var(--font-display);font-size:24px;font-weight:700;letter-spacing:-.03em}
.login-user{font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;color:var(--muted);margin-top:4px}
.login-field{display:block;text-align:left;margin-top:20px}
.login-field span{display:block;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;color:var(--muted);margin-bottom:6px}
.login-field input{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--text);font-family:var(--font-body);font-size:14px}
.login-field input:focus{outline:2px solid var(--accent);outline-offset:1px}
.login-error{min-height:18px;margin-top:7px;font-size:12px;line-height:1.4;color:#e23a2e;text-align:left}
.login-actions{display:flex;gap:8px;margin-top:4px}
.login-cancel,.login-submit{flex:1;padding:10px;border-radius:9px;font-size:13px;font-weight:650}
.login-cancel{background:var(--surface-2);border:1px solid var(--line);color:var(--text)}
.login-submit{background:var(--accent);border:1px solid var(--accent);color:var(--on-accent)}
.login-note{margin-top:16px;font-family:var(--font-mono);font-size:10px;letter-spacing:.01em;color:var(--muted)}

/* ---------- context menu ---------- */
.context-menu{position:fixed;z-index:270;min-width:220px;padding:5px;border-radius:9px;background:rgba(252,252,253,.94);border:1px solid rgba(20,22,30,.12);box-shadow:0 20px 50px rgba(5,12,30,.28),0 1px 3px rgba(5,12,30,.12);backdrop-filter:blur(40px) saturate(170%);-webkit-backdrop-filter:blur(40px) saturate(170%);color:var(--text);font-size:12.5px}
html[data-theme="dark"] .context-menu{background:rgba(38,40,48,.94);border-color:rgba(255,255,255,.14);box-shadow:0 24px 60px rgba(0,0,0,.55),0 1px 3px rgba(0,0,0,.35)}
.context-menu[hidden]{display:none!important}
.context-menu button{display:flex;align-items:center;gap:8px;width:100%;padding:6px 9px;border-radius:5px;text-align:left;white-space:nowrap;color:var(--text)}
.context-menu button:hover,.context-menu button:focus-visible{background:var(--accent);color:var(--on-accent);outline:none}
.context-menu .ctx-sep{height:1px;background:var(--line);margin:5px 4px}
.context-menu .ctx-danger{color:#e23a2e}
.context-menu .ctx-danger:hover{background:#e23a2e;color:#fff}
.context-menu .ctx-key{margin-left:auto;font-family:var(--font-mono);font-size:9px;opacity:.5}

/* ---------- toast ---------- */
.toast{position:fixed;left:50%;bottom:104px;transform:translate(-50%,10px);z-index:280;padding:9px 14px;border-radius:9px;background:var(--glass-strong);border:1px solid var(--glass-line);box-shadow:var(--shadow-soft);backdrop-filter:blur(30px);-webkit-backdrop-filter:blur(30px);font-size:12px;color:var(--text);opacity:0;pointer-events:none;transition:opacity .25s,transform .25s}
.toast.is-visible{opacity:1;transform:translate(-50%,0)}

/* nojs */
.nojs{position:fixed;inset:0;z-index:900;background:var(--bg);color:var(--text);overflow:auto;padding:32px;display:grid;place-items:center}
.nojs__card{max-width:640px;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:var(--shadow)}
.nojs__card h2{font-size:30px;letter-spacing:-.04em;margin-top:10px}
.nojs__card p{margin-top:10px;color:var(--text-2)}
.nojs__card ul{margin-top:16px;display:flex;flex-direction:column;gap:8px;font-size:14px;color:var(--text-2)}
.nojs__card a{color:var(--accent);text-decoration:underline}

/* motion */
.js .desktop-app,.js .home-app{animation:iconIn .55s var(--ease) both;animation-delay:calc(var(--i,0) * 45ms)}
.js .desktop .widget,.js .home .widget{animation:widgetIn .7s var(--ease) both}
.js .desktop__note{animation:widgetIn .8s var(--ease) .2s both}
.dock{animation:dockIn .7s var(--ease) .15s both}
@keyframes iconIn{from{opacity:0;transform:translateY(10px) scale(.94)}to{opacity:1;transform:none}}
@keyframes widgetIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes dockIn{from{opacity:0;transform:translate(-50%,20px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.78)}}
@keyframes planetFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes orbitSpin{to{transform:rotate(360deg)}}
@keyframes blobFloat{0%{transform:translate3d(0,0,0) scale(1)}100%{transform:translate3d(2vw,2vh,0) scale(1.06)}}

@media (max-width:1240px) and (min-width:1180px){
  .menubar__clock span:first-child{display:none}
}

/* ---------- tablet ---------- */
@media (min-width:740px) and (max-width:1179px){
  .menubar{display:none}
  .statusbar{height:50px;padding:0 30px}
  .statusbar__island{display:none}
  .statusbar__date{display:inline}
  .home{grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;padding:calc(76px + env(safe-area-inset-top)) 30px 156px;grid-auto-rows:minmax(92px,auto)}
  .widget--home{grid-column:span 2;grid-row:span 2;height:auto;min-height:230px;padding:24px}
  .widget--home .widget__word{font-size:44px}
  .widget--home .widget__cn{font-size:13px}
  .widget--home .widget__tagline{font-size:16px;margin-top:14px;max-width:22ch}
  .widget--home .widget__meta{font-size:11px}
  .widget--home .widget__hint{font-size:11px}
  .widget--home .widget__planet{width:146px;height:146px;right:-30px;bottom:-38px}
  .widget--tablet{display:block;grid-column:span 2;padding:18px;min-height:0}
  .home-app .app-icon{--icon-size:64px}
  .home-app__label{font-size:12px;max-width:96px}
  .home-app{padding:6px 2px}
  .dock{bottom:22px;gap:14px;padding:10px 16px;border-radius:28px}
  .dock__item,.dock__item .app-icon{width:56px;height:56px;--icon-size:56px}
  .dock__sep--touch{display:block}
  .app-backdrop{display:block}
  .app-layer.is-open{pointer-events:auto}
  .app-panel{left:50%;top:50%;width:min(760px,88vw);max-height:86vh;border-radius:28px;opacity:0;transform:translate(-50%,-50%) scale(.96);box-shadow:0 40px 100px rgba(8,15,35,.35);border:1px solid var(--glass-line)}
  .app-layer.is-open .app-panel{transform:translate(-50%,-50%) scale(1);opacity:1}
  .app-panel__bar{height:58px;padding:0 18px;background:var(--window-bar);grid-template-columns:1fr auto 1fr}
  .app-panel__done{justify-self:end}
  .app-panel__back{display:none}
  .app-panel__done{display:block}
  .app-panel__grabber{display:block;top:7px}
  .app-panel__title{font-size:14px;padding-top:4px}
  .app-panel__scroll{padding:18px 26px 30px}
  .app-panel.is-almanac{width:min(720px,92vw);height:min(900px,88vh);max-height:min(900px,88vh);border-radius:24px}
  .app-panel.is-almanac .app-panel__scroll{background:var(--window-bg)}
  .window-controls{display:none}
  .app-hero h2{font-size:28px}
  .about-app__headline{font-size:36px}
  .contact-app__headline{font-size:40px}
  .lang-popover{display:none}
}
@media (min-width:740px){
  .home-indicator{display:block}
  .statusbar__island{display:none}
}

/* ---------- desktop ---------- */
@media (min-width:1180px){
  .menubar{display:flex}
  .statusbar{display:none}
  .home{display:none}
  .home-indicator{display:none}
  .desktop{display:block}
  .dock{bottom:14px;gap:8px;padding:8px 12px;border-radius:24px}
  .dock__item,.dock__item .app-icon{width:54px;height:54px;--icon-size:54px}
  .dock__sep--touch{display:block}
  .app-backdrop{display:none}
  .app-panel{left:50%;top:110px;width:min(720px,calc(100vw - 240px));max-height:78vh;border-radius:16px;opacity:0;transform:translateX(-50%) scale(.985);border:1px solid var(--glass-line);box-shadow:0 40px 110px rgba(5,12,30,.4)}
  .app-layer.is-open .app-panel{transform:translateX(-50%) scale(1);opacity:1}
  .app-panel__bar{height:44px;grid-template-columns:1fr auto 1fr;cursor:grab;user-select:none;background:var(--window-bar);padding:0 14px}
  .app-panel__bar:active{cursor:grabbing}
  .window-controls{display:flex;justify-self:start}
  .app-panel__back{display:none}
  .app-panel__done{display:none}
  .app-panel__grabber{display:none}
  .app-panel__title{font-size:13px;padding:0}
  .app-panel__scroll{padding:28px 32px 32px}
  .app-panel.is-zoomed{top:80px;left:50%;width:min(920px,calc(100vw - 120px));max-height:82vh;transform:translateX(-50%) scale(1)}
  .app-layer.is-open .app-panel.is-minimized{transform:translateX(-50%) translateY(24px) scale(.98);opacity:0}
  .app-panel__homebar{display:none}
  .app-hero{padding:20px}
  .app-hero h2{font-size:28px}
  .about-app__headline{font-size:36px}
  .contact-app__headline{font-size:42px}
  .lang-popover{display:block}
  .statusbar__island{display:none}
  .menubar{z-index:220}
  .dock{z-index:190}
}
@media (min-width:740px) and (max-width:1179px){
  .lang-popover{display:none}
}

/* mobile-only details */
@media (max-width:1179px){
  .dock__item--archive{display:none}
  .app-layer.is-open{pointer-events:auto}
  .window-layer{display:none}
}
@media (max-width:739px){
  .admin-grid2{grid-template-columns:1fr}
  .wp-grid{grid-template-columns:1fr 1fr}
  .admin-head h2{font-size:23px}
  .admin-app-row{grid-template-columns:36px minmax(0,1fr);gap:8px}
  .admin-app-row__actions{grid-column:1/-1;justify-content:flex-end}
  .admin-link-row{grid-template-columns:1fr}
  .admin-link-row .admin-app-row__actions{justify-content:flex-end}
  .admin-tag-row{grid-template-columns:1fr}
  .admin-tag-row .admin-app-row__actions{justify-content:flex-end}
  .friend-row{grid-template-columns:40px minmax(0,1fr) 16px;gap:10px}
  .friend-row__host{display:none}
  .admin-icon-row input{min-width:0;flex-basis:100%;order:3}
  .wp-image-row{grid-template-columns:1fr auto}
  .wp-image-row__label{grid-column:1/-1}
  .login-card{padding:26px 20px 20px;border-radius:20px}
  .login-field input,.admin-field input,.admin-field select,.admin-field textarea,.wp-image-row input{font-size:16px}
  .context-menu{min-width:200px}
  .toast{bottom:calc(120px + env(safe-area-inset-bottom))}
}
@media (max-width:739px){
  .statusbar__island{display:block}
  .statusbar__date{display:none}
  .app-backdrop{display:block}
  .app-layer.is-open{pointer-events:auto}
  .app-panel{inset:0;width:100%;height:100%;max-height:none;border-radius:0;transform:translateY(100%)}
  .app-layer.is-open .app-panel{transform:translateY(0)}
  .app-panel__status{display:flex;height:calc(34px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top)}
  .app-panel__back{display:grid}
  .app-panel__done{display:block}
  .app-panel__grabber{display:none}
  .app-panel__homebar{display:block}
  .window-controls{display:none}
  .app-panel__bar{padding-top:0}
  .app-panel__scroll{padding-top:14px}
  .app-panel.is-almanac .app-panel__scroll{padding:0 0 calc(20px + env(safe-area-inset-bottom))}
  .home{padding-bottom:calc(150px + env(safe-area-inset-bottom))}
  .dock{bottom:calc(24px + env(safe-area-inset-bottom))}
  .home-indicator{bottom:calc(7px + env(safe-area-inset-bottom))}
  .about-app__principles{grid-template-columns:1fr 1fr}
  .about-app__headline{font-size:30px}
  .contact-app__headline{font-size:32px}
  .settings__languages{grid-template-columns:1fr 1fr}
  .lang-popover{display:none}
}
@media (max-width:379px){
  .home{gap:13px;padding-left:16px;padding-right:16px}
  .home-app .app-icon{--icon-size:52px}
  .home-app__label{font-size:11px;min-height:28px;max-width:76px}
  .widget--home{height:182px}
  .widget--home .widget__word{font-size:31px}
  .widget--home .widget__tagline{font-size:12.5px}
  .widget--home .widget__planet{width:96px;height:96px}
  .dock{gap:9px;padding:7px 10px}
  .dock__item,.dock__item .app-icon{width:48px;height:48px;--icon-size:48px}
  .app-hero h2{font-size:23px}
  .app-icon--hero{--icon-size:68px}
  .settings__languages{grid-template-columns:1fr}
  .about-app__principles{grid-template-columns:1fr}
  .archive__type{display:none}
  .archive__row{grid-template-columns:38px 1fr auto 14px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .wallpaper__blob,.wallpaper__orbit,.widget__planet{animation:none!important}
  .js .desktop-app,.js .home-app,.js .desktop .widget,.js .home .widget,.dock{animation:none!important}
}
