:root{--taskbar-height:52px;--bg:#2b1d48;--panel:#fdf8ff;--panel2:#f5e8fb;--line:#d6b2ea;--title1:#c89fe6;--title2:#9a6bc9;--accent:#a96dca;--text:#6f538b;--shadow:#2b1946b6}
*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden}body{font-family:"Trebuchet MS","Microsoft YaHei UI",sans-serif;background:var(--bg);color:var(--text)}button,input,textarea,select{font:inherit}button{cursor:pointer}
.desktop{position:relative;height:100%;background:#281940;isolation:isolate}.wallpaper,.wallpaper-shade{position:absolute;inset:0}.wallpaper{background:center/cover no-repeat}.wallpaper-shade{background:linear-gradient(180deg,#27194422,#1b123344 65%,#25154588)}
.desktop-brand{position:absolute;top:16px;left:24px;display:flex;gap:12px;align-items:center;z-index:10;color:#fff}.brand-pet{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(#f8d8ff,#ddaae7);color:#a75bc3;border:2px solid #fff4ff;font-size:26px;box-shadow:0 4px 10px #00000030}.brand-name{font-size:20px;font-weight:800;letter-spacing:2px}.brand-tagline{font-size:12px;opacity:.95}
.desktop-icons{position:absolute;top:88px;left:16px;display:flex;flex-direction:column;gap:12px;z-index:6}.desktop-icon{width:72px;display:flex;flex-direction:column;align-items:center;gap:6px;background:none;border:none;color:#fff;text-shadow:0 2px 4px #231537;padding:0}.icon-bubble{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;font-size:28px;background:linear-gradient(#f5d8ff,#cb95e2);border:2px solid #fff1ff;color:#8d55a9;box-shadow:4px 4px #00000025}.desktop-icon span:last-child{font-size:12px;line-height:1.2}
#window-layer{position:absolute;inset:0;z-index:12;pointer-events:none}.os-window{pointer-events:auto;position:absolute;background:var(--panel);border:3px solid #d9b5ea;box-shadow:0 0 0 2px #644595,7px 8px 0 #28173f7d;display:flex;flex-direction:column;resize:both;overflow:hidden;min-width:280px;min-height:180px}.os-window.front{box-shadow:0 0 0 2px #644595,10px 10px 0 #28173f9d}.os-window.minimized{display:none}.os-window.maximized{left:0!important;top:0!important;width:100%!important;height:calc(100% - var(--taskbar-height))!important;resize:none}.window-titlebar{height:37px;display:flex;align-items:center;justify-content:space-between;padding:0 10px;background:linear-gradient(180deg,var(--title1),var(--title2));color:#fff;user-select:none}.window-title{font-size:14px;font-weight:700;letter-spacing:.5px}.window-controls{display:flex;gap:5px}.window-controls button{width:24px;height:22px;border:1px solid #f3dbff;background:#f7efff;color:#8e62b2;font-weight:700}.window-content{flex:1;overflow:auto;background:#fffdfd}.window-footer{display:flex;justify-content:space-between;padding:4px 10px;background:#f3e2fb;border-top:1px solid #e3ccef;font-size:11px;color:#9d80b2}
.window-menu{display:flex;gap:18px;padding:8px 13px;border-bottom:1px solid #ecd9f4;background:#fff8fe;font-size:13px}.panel-section{padding:16px}.muted{color:#9c85af}.tiny{font-size:12px}
.home-grid{display:grid;grid-template-columns:245px 1fr;gap:14px;padding:14px 16px}.home-image{position:relative;display:flex;align-items:center;justify-content:center;min-height:280px;background:linear-gradient(180deg,#f6edff,#f1dbfb);border:1px solid #ebd6f3;padding:10px}.home-image.deluxe img{max-width:100%;max-height:100%;object-fit:contain;filter:drop-shadow(0 10px 18px #b285d466)}.image-tag{position:absolute;left:10px;bottom:10px;background:#8157a5;color:#fff;padding:5px 9px;font-size:11px;border-radius:4px}.intro{padding:4px 0}.pixel-heading{font-size:38px;line-height:1;color:#b156cd;margin:6px 0 12px;font-weight:900}.headline{display:block;color:#7c4a9a;font-size:18px;margin-bottom:10px}.intro p{line-height:1.75;margin:0 0 14px}.quick-links{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pixel-button{border:1px solid #d4a7eb;background:linear-gradient(#fff7fc,#f4d6ee);box-shadow:2px 2px #d6b5e2;color:#89509f;padding:9px 10px;min-height:38px;font-size:13px;font-weight:700}.pixel-button small{display:block;font-weight:500;opacity:.88}.pixel-button:hover{background:#f8d0f7;transform:translateY(-1px)}.pixel-button.blue{background:linear-gradient(#faf7ff,#d9e7ff);color:#5872bc;border-color:#adcaf6}.pixel-button.peach{background:linear-gradient(#fff7f0,#ffe2cb);color:#bf7092;border-color:#f1c9ad}.pixel-button.purple{background:linear-gradient(#fdf7ff,#ead4ff);color:#875ab6;border-color:#d4b2f2}.pixel-button.selected{outline:2px solid #7a54a5}
.home-quote{margin:0 16px 16px;padding:12px 16px;background:#ffe8fa;color:#9a60ab;border:1px dashed #d8a0db;line-height:1.65}.vampire-points{display:flex;flex-wrap:wrap;gap:10px}.chip{background:#f3e4ff;border:1px solid #e4c7ef;padding:5px 9px;color:#8b68ae;font-size:12px}
.app-topbar{display:flex;flex-wrap:wrap;gap:9px;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #ead8ef;background:#fff6fc}.app-topbar h2{margin:0;font-size:18px;color:#9a6aab}.searchbox,.textinput{border:2px solid #ddc0ec;background:#fff;color:#745488;padding:9px 10px;min-width:0;border-radius:2px}.searchbox{max-width:260px;width:52%}
.app-list{display:flex;flex-direction:column;gap:9px}.list-item{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #e9d6ee;background:#fff;cursor:pointer;text-align:left;color:#74558b;width:100%}.list-item:hover{background:#fff0fe;border-color:#ca92db}.list-icon{font-size:24px}.list-main{flex:1;min-width:0}.list-item strong{display:block;margin-bottom:3px}.list-item small{color:#ab92b5}
.notice{background:#fff2d9;border:1px solid #f2ca91;padding:10px 12px;color:#946d46;line-height:1.6;font-size:12px}.notice.purple{background:#f6eaff;border-color:#dcc2f0;color:#8766a4}.reader{padding:24px clamp(15px,6%,70px);max-width:800px;margin:auto;line-height:2}.reader h1,.reader h2{color:#81539f}
.cover-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:14px}.cover-card{border:2px solid #e3caec;background:#fff;padding:6px;text-align:left;cursor:pointer;color:#705384;box-shadow:2px 2px #eddaef}.cover-card:hover{transform:translateY(-3px);border-color:#be83d9}.cover-art{height:145px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;text-align:center;color:#fff;padding:12px;background:linear-gradient(140deg,var(--cover1,#b884d2),var(--cover2,#ffc2de));text-shadow:1px 2px #653b7655;position:relative;overflow:hidden}.cover-art:before{content:'✦';position:absolute;top:7px;right:12px;color:#fff6;font-size:32px}.cover-symbol{font-size:37px;z-index:1}.cover-name{font-size:13px;font-weight:900;z-index:1}.cover-card b{display:block;font-size:12px;margin:9px 2px 2px}.cover-card small{font-size:11px;color:#a18cad;margin:0 2px}.detail-split{display:grid;grid-template-columns:150px 1fr;gap:18px}.big-cover{height:215px}.info-list{line-height:2}
.tool-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-top:14px}.tool-card{background:#fff;border:1px solid #e7d3f0;padding:14px;box-shadow:2px 2px #efdef8}.tool-card h3{margin:5px 0 8px;color:#8f58b0}.tool-card p{margin:0 0 14px;line-height:1.65;font-size:13px}.tool-kind,.tool-action{display:inline-block;padding:4px 8px;border:1px solid #e4c8f3;background:#f9f0ff;color:#8f6aaf;font-size:11px}.tool-action{background:#fff4eb;border-color:#f2d1bc;color:#bb7990}
.chat-row{display:flex;gap:9px;align-items:flex-start;margin-bottom:14px}.chat-avatar{width:44px;height:44px;object-fit:cover;border:2px solid #d7b1e1;background:#f7e7ff}.chat-meta{font-size:12px;color:#9376a1;margin-bottom:5px}.bubble{max-width:90%;border:1px solid #e9cdea;background:#fff3ff;padding:10px 13px;border-radius:13px 13px 13px 3px;line-height:1.6}.chat-form{display:flex;flex-direction:column;gap:9px;margin-top:18px;border-top:1px dashed #dfc2e4;padding-top:14px}.chat-form textarea{min-height:83px;resize:vertical}
.wallpaper-choice{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}.wallpaper-choice .pixel-button{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:120px}.setting-row{display:flex;align-items:center;justify-content:space-between;padding:13px 0;border-bottom:1px solid #f0e4f3;gap:12px}
.music-content{display:grid;grid-template-columns:87px 1fr;gap:12px;padding:14px}.music-cover{width:87px;height:87px;background:linear-gradient(140deg,#a57dcc,#eeabc5);display:grid;place-items:center;font-size:32px;color:#fff;border:2px solid #dbc2e7}.music-row{display:flex;gap:9px;align-items:center;margin-top:13px}.music-row button{border:1px solid #dfc3ed;background:#f8e9ff;color:#a16bc0;padding:4px 11px}.music-row input{width:100%}
.todo-panel{padding-bottom:14px}.todo-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.summary-card{background:#fff7fe;border:1px solid #e4caef;padding:10px 12px;text-align:center}.summary-card strong{display:block;color:#8b58b0;font-size:20px}.summary-card small{font-size:12px;color:#a088b4}.progress-line{height:10px;background:#f0e1f7;border:1px solid #e0c7ef;margin-top:14px;overflow:hidden}.progress-line span{display:block;height:100%;background:linear-gradient(90deg,#d58ceb,#a56ad2)}.todo-items{display:flex;flex-direction:column;gap:10px}.todo-card{display:flex;gap:10px;align-items:flex-start;padding:11px 12px;background:#fff;border:1px solid #e6d4ef}.todo-card.done{opacity:.72;background:#fcf6ff}.todo-main{display:flex;gap:10px;flex:1;align-items:flex-start}.todo-main input{margin-top:4px;accent-color:#a76ccc}.todo-copy{flex:1}.todo-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.todo-head strong{color:#7c5797}.todo-meta{font-size:12px;color:#a089b4;margin-top:4px}.todo-note{font-size:12px;line-height:1.55;margin-top:7px;color:#826799}.todo-priority{padding:2px 8px;border-radius:999px;font-size:11px;border:1px solid}.p-高{background:#ffe8ef;color:#c0577f;border-color:#f3b0c4}.p-中{background:#f4ecff;color:#865cb2;border-color:#d7c0ef}.p-低{background:#eaf6ff;color:#5579ba;border-color:#c9ddfb}.todo-remove{border:none;background:transparent;color:#aa78bd;font-size:20px;line-height:1}.todo-form{margin-top:14px;display:flex;flex-direction:column;gap:10px}.todo-form-row{display:grid;grid-template-columns:1fr 100px;gap:10px}
.mascot{position:absolute;bottom:64px;right:16px;width:180px;z-index:25;cursor:pointer;text-align:center;user-select:none;filter:drop-shadow(0 10px 16px #24143b80)}.mascot img{width:100%;display:block;image-rendering:pixelated}.mascot:hover{transform:translateY(-4px)}.mascot-speech{position:absolute;bottom:86%;right:78px;width:230px;padding:12px;background:#fff4ff;border:2px solid #d8b0ec;box-shadow:4px 4px #3525529b;color:#9158ac;font-size:12px;line-height:1.55;border-radius:8px}.mascot-hint{color:#fff;text-shadow:0 2px 4px #39204f;font-size:10px}
.taskbar{height:var(--taskbar-height);display:flex;gap:8px;align-items:center;padding:6px 8px;position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,#956dc0,#c29add 80%,#e4c7f3);border-top:3px solid #efceff;z-index:100;box-shadow:0 -2px 12px #20133588}.start-button{height:36px;background:linear-gradient(#bd92ea,#9566c7);border:2px solid #f7dcff;box-shadow:2px 2px #674a9e;color:white;font-size:15px;font-weight:900;padding:0 14px}.start-flower{color:#ffe2f5;font-size:19px}.running-apps{display:flex;gap:6px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}.running-app{max-width:180px;min-width:88px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#664784;background:#f9effd;border:2px solid #b38bdb;box-shadow:1px 1px #553b8b;min-height:34px;padding:5px 10px;font-size:12px}.running-app.active{background:#e2c5f4;box-shadow:inset 2px 2px 1px #9670b8}.system-tray{display:flex;align-items:center;gap:6px;color:#fff}.tray-button{border:none;background:transparent;color:#fff;font-size:20px;padding:3px}.clock{min-width:63px;font-family:monospace;font-size:12px;text-align:right;white-space:pre-line;line-height:1.2}
.start-menu{position:absolute;bottom:52px;left:8px;width:295px;max-height:min(560px,calc(100dvh - 80px));overflow:auto;background:#f9edff;border:3px solid #d2ade9;box-shadow:0 0 0 2px #63469a,6px 5px #2e1d50b0;z-index:101}.hidden{display:none!important}.start-menu-header{display:flex;gap:11px;align-items:center;padding:12px;background:linear-gradient(90deg,#ae7acb,#dfb0e8);color:#fff}.start-menu-header img{width:55px;height:55px;object-fit:cover;border:2px solid #fff4ff;background:#fff}.start-menu-header small{display:block;margin-top:5px}.start-menu-items{padding:7px}.start-menu-items button{display:flex;gap:12px;align-items:center;padding:9px 11px;color:#76568f;border:0;background:transparent;text-align:left;width:100%}.start-menu-items button:hover{background:#ead5fa}.start-menu-footer{display:flex;justify-content:space-between;align-items:center;padding:10px;background:#e7d0ee;font-size:11px}.start-menu-footer button{background:#fff6ff;border:1px solid #c69bd8;color:#855fa4;padding:6px 8px}
.toast{position:absolute;left:50%;bottom:70px;transform:translateX(-50%);z-index:200;background:#fff4ff;border:2px solid #c58edc;color:#8e58a4;padding:12px 20px;box-shadow:4px 4px #3421499e;font-size:13px;display:none;max-width:92vw;text-align:center}.toast.show{display:block}.empty{padding:22px;text-align:center;color:#a288b6}.reduce-motion *{transition:none!important;animation:none!important}
@media(max-width:960px){.home-grid{grid-template-columns:1fr 1fr}.mascot{width:142px;right:8px}.mascot-speech{width:190px;right:60px}}
@media(max-width:680px){:root{--taskbar-height:58px}.desktop-brand{top:10px;left:10px}.desktop-icons{top:78px;left:6px;right:6px;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.desktop-icon{width:auto}.icon-bubble{width:44px;height:44px;font-size:24px}.os-window,.os-window.maximized{position:absolute!important;left:0!important;top:0!important;width:100%!important;height:calc(100% - var(--taskbar-height))!important;min-width:0;resize:none;border-width:2px}.home-grid{grid-template-columns:1fr;gap:10px}.pixel-heading{font-size:28px}.quick-links{grid-template-columns:1fr}.searchbox{width:100%;max-width:none}.detail-split{grid-template-columns:100px 1fr}.tool-grid{grid-template-columns:1fr 1fr}.todo-summary{grid-template-columns:1fr 1fr 1fr}.mascot{width:110px;bottom:60px;right:2px}.mascot-speech{width:160px;font-size:11px;right:38px}.mascot-hint{display:none}.running-app{min-width:42px;width:48px;padding:5px;text-align:center;font-size:15px}.running-name{display:none}.start-button{font-size:12px;padding:0 8px}.clock{font-size:10px;min-width:50px}}

/* V0.3: full-body standing pixel vampire companion */
.mascot{width:154px;right:20px;bottom:calc(var(--taskbar-height) + 12px);transform-origin:bottom center;filter:drop-shadow(0 9px 8px #170e308a)}
.mascot img{display:block;width:100%;height:auto;object-fit:contain;image-rendering:pixelated;animation:mascotIdle 3.5s ease-in-out infinite;transform-origin:bottom center}
.mascot:hover{transform:translateY(-4px)}
.mascot-speech{right:100%;bottom:68%;width:215px;max-width:min(215px,55vw)}
.mascot-hint{display:block;margin-top:1px;font-size:10px}
.mascot.mascot-bounce img{animation:mascotBounce .55s ease-out}
@keyframes mascotIdle{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-5px) rotate(1deg)}}
@keyframes mascotBounce{0%{transform:translateY(0) scale(1)}40%{transform:translateY(-16px) scale(1.04)}100%{transform:translateY(0) scale(1)}}
.reduce-motion .mascot img{animation:none}
@media(max-width:960px){.mascot{width:134px;right:10px}.mascot-speech{right:93%;width:185px}}
@media(max-width:680px){.mascot{width:99px;right:4px;bottom:calc(var(--taskbar-height) + 8px)}.mascot-speech{width:155px;right:94%;bottom:70%}.mascot-hint{display:none}}


/* V0.4 - four visually distinct wallpapers with live previews */
.wallpaper-choice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:13px 0 19px}
.wallpaper-choice .wallpaper-card{display:flex;flex-direction:column;gap:7px;text-align:left;background:#fff9fe;border:2px solid #ddc5ed;box-shadow:3px 3px #ead9f1;color:#815c9a;padding:8px;min-height:0;transition:transform .12s ease}
.wallpaper-choice .wallpaper-card:hover{transform:translateY(-2px);border-color:#b481d5}
.wallpaper-choice .wallpaper-card.selected{border-color:#9d61cb;box-shadow:0 0 0 2px #efc4fa,3px 3px #d1afdf}
.wallpaper-card .wallpaper-preview{display:block;width:100%;aspect-ratio:16/9;background-size:cover;background-position:center;image-rendering:pixelated;border:1px solid #c5acd5}
.wallpaper-card .wallpaper-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;font-weight:700}
.wallpaper-card .wallpaper-tip{font-size:11px;color:#a18bb0;font-weight:400;line-height:1.35}
.wallpaper-card .wallpaper-selected{font-size:11px;color:#a362c0}
@media(max-width:440px){.wallpaper-choice{grid-template-columns:1fr}}
