@font-face{font-family:"PT Mono";font-style:normal;font-weight:100 800;font-display:swap;src:url("./fonts/jbmono.woff2") format("woff2")}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{
 --g:clamp(20px,5.5vw,40px);
 --bg:#15172b;--bg-window:#222339;--bg-darker:#1b1c30;--border:#34365a;--border-dashed:#555889;
 --text:#e6e6f2;--text-dim:#8c8daf;--text-muted:#6c6e90;--accent:#f0a673;--accent-2:#f5c49c;--accent-rgb:240,166,115;
 --green:#7fd1a2;--blue:#7fb0ef;--yellow:#ead27a;--purple:#b896ee;--cyan:#7fdcd0;--red:#ef8a8a;
 --dot-r:#ff605c;--dot-y:#ffbd44;--dot-g:#00ca4e;
 --radius:12px;--vh:100vh;
}
html{font-size:18px;color:var(--text);font-family:"PT Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;height:100%;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg)}
body{min-height:100%;display:flex;align-items:center;justify-content:center;padding:var(--g);background:transparent;overflow:hidden;height:100vh;height:100dvh}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
a{color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.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}
::selection{background:rgba(var(--accent-rgb),.28);color:var(--text)}

/* wallpaper */
.wallpaper{position:fixed;inset:0;z-index:0;background:var(--bg);overflow:hidden}
.wallpaper img{position:absolute;inset:-3%;width:106%;height:106%;object-fit:cover;object-position:center bottom;filter:blur(8px);transition:filter .5s ease,transform .5s ease}
.wallpaper::after{content:"";position:absolute;inset:0;background:rgba(9,9,22,.38);transition:background .5s ease;pointer-events:none}
body.minimized .wallpaper img{filter:none}
body.minimized .wallpaper::after{background:rgba(9,9,22,.12)}
.dock{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);display:flex;gap:10px;padding:9px 12px;border-radius:20px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);z-index:1;filter:blur(6px);transition:filter .5s ease}
body.minimized .dock{filter:none}
.dock button{width:48px;height:48px;border-radius:12px;display:grid;place-items:center;font-size:18px;font-weight:700;color:#fff;background:linear-gradient(160deg,rgba(255,255,255,.28),rgba(255,255,255,.06));box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 6px 14px rgba(0,0,0,.25);transition:transform .2s cubic-bezier(.3,.7,.4,1)}
.dock button:nth-child(1){background:linear-gradient(160deg,#f6b07c,#d9734f)}
.dock button:nth-child(2){background:linear-gradient(160deg,#8fb7f3,#4f6fd1)}
.dock button:nth-child(3){background:linear-gradient(160deg,#8ce0b2,#3a9c6e)}
.dock button:nth-child(4){background:linear-gradient(160deg,#c6a8f5,#7a54c9)}
.dock button:nth-child(5){background:linear-gradient(160deg,#8de4da,#2f9a8f)}
.dock button:nth-child(6){background:linear-gradient(160deg,#f3d98a,#c99a2e)}
.dock button:nth-child(7){background:linear-gradient(160deg,#5e6185,#2b2d48)}
body.minimized .dock button:hover{transform:translateY(-6px) scale(1.12)}
body:not(.minimized) .dock{pointer-events:none}

/* window */
.terminal-window{position:relative;z-index:2;width:100%;max-width:960px;min-height:600px;max-height:85vh;background:var(--bg-window);border-radius:var(--radius);box-shadow:0 26px 80px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.05);display:flex;flex-direction:column;overflow:hidden;transition:max-width .3s ease,min-height .3s ease,max-height .3s ease,border-radius .3s ease,box-shadow .3s ease,opacity .3s ease,transform .3s ease}
.titlebar{display:flex;align-items:center;gap:8px;padding:14px 18px;background:var(--bg-darker);border-bottom:1px solid var(--border);flex-shrink:0;user-select:none;-webkit-user-select:none}
.dot{width:12px;height:12px;border-radius:50%;flex-shrink:0;position:relative;transition:opacity .2s}
.dot::after{content:"";position:absolute;inset:-8px}
button.dot:hover{opacity:.7}
.dot.red{background:var(--dot-r)}.dot.yellow{background:var(--dot-y)}.dot.green{background:var(--dot-g)}
.titlebar-title{flex:1;text-align:center;color:var(--text-muted);font-size:.8rem;letter-spacing:.4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.titlebar-pad{width:52px;flex-shrink:0}
.terminal-window.minimized{min-height:0;max-height:none;max-width:560px}
.terminal-window.minimized .terminal-body,.terminal-window.minimized .chips,.terminal-window.minimized .input-area{display:none}
.terminal-window.minimized .titlebar{border-bottom:0}
.terminal-window.maximized{max-width:100%;min-height:100%;max-height:100%;border-radius:0;box-shadow:none}
body.maximized{padding:0}
body.closed .terminal-window{opacity:0;transform:scale(.97);pointer-events:none}

.terminal-body{flex:1;overflow-y:auto;overflow-x:hidden;padding:28px 32px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border) transparent}
.terminal-body::-webkit-scrollbar,.autocomplete::-webkit-scrollbar{width:6px}
.terminal-body::-webkit-scrollbar-thumb,.autocomplete::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}

/* boot */
.boot-text{display:none;font-size:.85rem;line-height:1.75;color:var(--text-dim);white-space:pre-wrap;max-width:620px}
.boot-text .ok{color:var(--green)}.boot-text .accent{color:var(--accent)}.boot-text .dim{opacity:.55;font-style:italic}
.boot-text .press{margin-top:6px;color:var(--text)}
.boot-text .press::after{content:"▋";color:var(--accent);margin-left:4px;animation:blink 1s step-end infinite}
.terminal-window.booting .boot-text{display:block}
.terminal-window.booting .ascii-name,.terminal-window.booting .welcome-box,.terminal-window.booting .output-area,.terminal-window.booting .chips,.terminal-window.booting .input-area{display:none}

/* name */
.ascii-name{font-family:inherit;font-size:.55rem;line-height:1.08;letter-spacing:0;white-space:pre;font-weight:700;margin-bottom:8px;background:linear-gradient(90deg,var(--accent-2),var(--accent) 45%,#e98a6c);-webkit-background-clip:text;background-clip:text;color:transparent;opacity:0;animation:fadeSlideIn .6s ease forwards;overflow:hidden}
.ascii-name .l2{display:none}

/* welcome */
.welcome-box{border:1px dashed var(--border-dashed);border-radius:8px;margin:20px 0 24px;display:grid;grid-template-columns:1fr 1fr;overflow:hidden;opacity:0;animation:fadeSlideIn .6s ease .3s forwards}
.welcome-left{padding:24px;border-right:1px dashed var(--border-dashed);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-width:0}
.greeting{font-size:1rem;color:var(--text);text-align:center}
.portrait-wrap{width:100%;display:flex;justify-content:center;overflow:hidden}
.portrait{font-family:inherit;font-size:6.4px;line-height:1.08;letter-spacing:0;color:var(--accent);white-space:pre;transform-origin:top center}
.subtitle{color:var(--text-dim);font-size:.8rem;text-align:center}
.mail-link{text-decoration:none;border-bottom:1px dashed var(--border-dashed);padding-bottom:1px}
.mail-link:hover{color:var(--accent);border-color:var(--accent)}
.welcome-right{display:flex;flex-direction:column;min-width:0}
.welcome-section{padding:16px 20px;flex:1}
.welcome-section+.welcome-section{border-top:1px dashed var(--border-dashed)}
.welcome-section-title{color:var(--accent);font-size:.85rem;font-weight:600;margin-bottom:8px}
.item{display:flex;gap:16px;font-size:.8rem;line-height:1.7}
.item .label{color:var(--text-dim);min-width:72px;flex-shrink:0}
.nav-item{display:flex;gap:16px;width:100%;text-align:left;font-size:.8rem;line-height:1.7;padding:0;border-radius:4px;transition:background .15s}
.nav-item .nav-cmd{color:var(--accent);font-weight:600;min-width:9ch}
.nav-item .nav-desc{color:var(--text-dim)}
.nav-item:hover{background:rgba(var(--accent-rgb),.08)}
.command-hint{color:var(--text-muted);font-size:.75rem;margin-top:8px}

/* output */
.output-area{min-height:20px}
.output-block{margin-bottom:16px;animation:fadeSlideIn .3s ease}
.cmd-echo{color:var(--text-dim);margin-bottom:8px;font-size:.85rem;word-break:break-word}
.cmd-echo .ps{color:var(--accent);margin-right:6px}
.output-line{line-height:1.7;font-size:.85rem;min-height:1.7em;overflow-wrap:anywhere}
.output-line.heading{color:var(--accent);font-weight:600;font-size:.95rem;margin-top:12px;margin-bottom:4px}
.output-line.heading:first-child{margin-top:0}
.output-line .cmd-name{color:var(--accent);font-weight:600;display:inline-block;min-width:13ch}
.output-line .cmd-desc,.output-line.dim,.dim{color:var(--text-dim)}
.green{color:var(--green)}.blue{color:var(--blue)}.yellow{color:var(--yellow)}.purple{color:var(--purple)}.cyan{color:var(--cyan)}.red{color:var(--red)}.accent{color:var(--accent)}
.faint{opacity:.45;font-style:italic}
.sys{font-style:italic;color:var(--text-dim)}.sys b{color:var(--accent);font-weight:400;opacity:.75}
.tag{display:inline-block;padding:1px 8px;border-radius:3px;font-size:.72rem;line-height:1.6;margin-right:6px;margin-bottom:6px}
.tag.blue{background:rgba(127,176,239,.13)}.tag.green{background:rgba(127,209,162,.13)}.tag.purple{background:rgba(184,150,238,.13)}.tag.yellow{background:rgba(234,210,122,.13)}.tag.accent{background:rgba(var(--accent-rgb),.13)}.tag.cyan{background:rgba(127,220,208,.13)}
.cmd-link{color:var(--accent);text-decoration:none;border-bottom:1px dashed rgba(var(--accent-rgb),.5)}
.cmd-link:hover{border-bottom-style:solid}
.divider{border:0;border-top:1px solid var(--border);margin:12px 0}

.project-card{border:1px solid var(--border);border-radius:6px;padding:14px 18px;margin:8px 0;transition:border-color .2s,background .2s;display:block}
.project-card:hover{border-color:var(--accent);background:rgba(var(--accent-rgb),.04)}
.pc-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.pc-name{color:var(--accent);font-weight:600;font-size:.9rem}
.pc-live{color:var(--green);font-size:.72rem;white-space:nowrap}
.pc-live::before{content:"●";margin-right:6px;font-size:.6rem;vertical-align:1px;animation:pulse 2s ease-in-out infinite}
.pc-type{color:var(--text-dim);font-size:.78rem;margin-top:2px}
.pc-desc{font-size:.8rem;line-height:1.6;margin-top:6px}
.pc-tags{margin-top:10px;display:flex;flex-wrap:wrap}
.pc-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.btn{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:6px 14px;border:1px solid var(--border);border-radius:4px;font-size:.75rem;text-decoration:none;color:var(--text);transition:border-color .2s,background .2s,transform .15s;white-space:nowrap}
.btn:hover{border-color:var(--accent);background:rgba(var(--accent-rgb),.06);transform:translateY(-1px)}
.btn.primary{border-color:var(--accent);color:var(--accent)}
.btn .host{color:var(--text-dim)}

.series{margin:14px 0 6px}
.series-head{display:flex;align-items:baseline;gap:10px;font-size:.85rem;line-height:1.7}
.series-key{color:var(--bg-window);background:var(--accent);font-weight:700;padding:0 7px;border-radius:3px;font-size:.75rem}
.site-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:6px;margin-top:8px}
.site-link{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:36px;padding:6px 12px;border:1px solid var(--border);border-radius:4px;text-decoration:none;font-size:.75rem;transition:border-color .2s,background .2s}
.site-link:hover{border-color:var(--accent);background:rgba(var(--accent-rgb),.05)}
.site-link .sid{color:var(--accent);font-weight:600;min-width:4ch}
.site-link .snote{color:var(--text-dim);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.site-link .sarr{color:var(--text-muted);transition:transform .2s,color .2s}
.site-link:hover .sarr{color:var(--accent);transform:translate(2px,-2px)}

.social-link{display:flex;align-items:center;gap:12px;min-height:44px;padding:8px 14px;border:1px solid var(--border);border-radius:6px;margin:6px 0;text-decoration:none;font-size:.8rem;transition:border-color .2s,background .2s}
.social-link:hover{border-color:var(--accent);background:rgba(var(--accent-rgb),.04)}
.badge{width:30px;height:24px;border-radius:4px;display:grid;place-items:center;font-size:.65rem;font-weight:700;flex-shrink:0}
.badge.blue{background:rgba(127,176,239,.15)}.badge.purple{background:rgba(184,150,238,.15)}.badge.accent{background:rgba(var(--accent-rgb),.15)}.badge.green{background:rgba(127,209,162,.15)}.badge.cyan{background:rgba(127,220,208,.15)}
.social-name{min-width:9ch;font-weight:600}
.social-handle{color:var(--text-dim);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.social-arrow{color:var(--text-muted);transition:transform .2s,color .2s}
.social-link:hover .social-arrow{color:var(--accent);transform:translate(2px,-2px)}

.stack-row{display:flex;flex-wrap:wrap;margin:4px 0 2px}
.meter{display:flex;align-items:center;gap:12px;font-size:.8rem;line-height:1.7;margin:2px 0}
.meter .ml{min-width:12ch;color:var(--text-dim)}
.meter .mb{flex:1;max-width:260px;height:6px;border-radius:3px;background:var(--border);overflow:hidden}
.meter .mb i{display:block;height:100%;background:var(--accent);border-radius:3px;transform-origin:left;animation:grow .9s cubic-bezier(.2,.7,.2,1) both}
.meter .mv{color:var(--text-muted);min-width:7ch}

/* thinking */
.thinking{display:flex;align-items:center;gap:8px;padding:6px 0 4px 2px;font-size:.78rem;color:var(--accent)}
.thinking .tt{animation:thinkPulse 1.5s ease-in-out infinite}
.tdots{display:flex;gap:3px}.tdots i{width:4px;height:4px;border-radius:50%;background:var(--accent);animation:tdot 1.2s ease-in-out infinite}
.tdots i:nth-child(2){animation-delay:.2s}.tdots i:nth-child(3){animation-delay:.4s}
.intent{font-size:.75rem;color:var(--text-muted);line-height:1.7}
.intent .ok{color:var(--green)}

/* chips */
.chips{display:flex;gap:8px;padding:10px 32px 0;background:var(--bg-darker);border-top:1px solid var(--border);overflow-x:auto;scrollbar-width:none;flex-shrink:0}
.chips::-webkit-scrollbar{display:none}
.chip{flex-shrink:0;min-height:32px;padding:4px 12px;border:1px solid var(--border);border-radius:999px;font-size:.72rem;color:var(--text-dim);transition:border-color .2s,color .2s,background .2s}
.chip:hover{color:var(--accent);border-color:var(--accent);background:rgba(var(--accent-rgb),.06)}
.chip::before{content:"/";color:var(--text-muted);margin-right:1px}

/* input */
.input-area{position:relative;display:flex;align-items:center;gap:8px;padding:12px 32px 16px;background:var(--bg-darker);flex-shrink:0}
.input-prompt{color:var(--accent);font-size:1rem;font-weight:600;user-select:none;flex-shrink:0}
.input-wrapper{position:relative;flex:1;min-width:0}
.input-field{width:100%;min-height:32px;background:transparent;border:0;outline:0;color:var(--text);font-family:inherit;font-size:.9rem;caret-color:var(--accent);padding:0}
.input-field::placeholder{color:var(--text-muted)}
.send{width:36px;height:36px;border-radius:6px;border:1px solid var(--border);color:var(--accent);display:grid;place-items:center;font-size:.9rem;flex-shrink:0;transition:border-color .2s,background .2s}
.send:hover{border-color:var(--accent);background:rgba(var(--accent-rgb),.08)}
.autocomplete{position:absolute;bottom:calc(100% + 13px);left:-26px;right:-44px;background:var(--bg-darker);border:1px solid var(--border);border-bottom:0;border-radius:6px 6px 0 0;max-height:220px;overflow-y:auto;display:none;z-index:10;box-shadow:0 -10px 30px rgba(0,0,0,.25)}
.autocomplete.show{display:block}
.ac-item{display:flex;gap:12px;width:100%;text-align:left;padding:8px 16px;font-size:.78rem;transition:background .15s;min-height:36px;align-items:center}
.ac-item.active,.ac-item:hover{background:rgba(var(--accent-rgb),.09)}
.ac-cmd{color:var(--accent);font-weight:600;min-width:11ch}
.ac-cmd b{color:var(--text);font-weight:700}
.ac-desc{color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* close overlay */
.close-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:var(--g);background:rgba(9,9,22,.82);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);opacity:0;visibility:hidden;transition:opacity .4s ease,visibility .4s ease}
.close-overlay.visible{opacity:1;visibility:visible}
.close-window{width:100%;max-width:480px;background:var(--bg-window);border-radius:12px;box-shadow:0 26px 80px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.05);overflow:hidden;transform:translateY(8px) scale(.98);transition:transform .4s cubic-bezier(.2,.8,.2,1)}
.close-overlay.visible .close-window{transform:none}
.close-window .dot{opacity:.4}
.close-body{padding:28px 32px}
.close-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}
.close-btn{display:inline-flex;align-items:center;min-height:36px;padding:6px 14px;border:1px solid var(--border);border-radius:4px;color:var(--text);text-decoration:none;font-size:.78rem;transition:border-color .2s,background .2s,transform .15s}
.close-btn:hover{border-color:var(--accent);background:rgba(var(--accent-rgb),.06);transform:translateY(-1px)}
.close-btn.primary{border-color:var(--accent);color:var(--accent)}

#fxCanvas{position:fixed;inset:0;z-index:60;pointer-events:none;display:none}
#fxCanvas.on{display:block;pointer-events:auto;cursor:pointer}
.noscript{position:fixed;inset:auto 20px 20px;z-index:5;color:#fff;font-size:14px}

/* motion */
@keyframes fadeSlideIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.st{opacity:0;animation:rise .4s cubic-bezier(.25,.46,.45,.94) forwards;animation-delay:calc(var(--i,0) * 45ms)}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}
@keyframes tdot{0%,20%{opacity:.2}50%{opacity:1}100%{opacity:.2}}
@keyframes thinkPulse{0%,100%{opacity:.45}50%{opacity:1}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.cursor::after{content:"▋";color:var(--accent);margin-left:2px;animation:blink 1s step-end infinite}
@media (prefers-reduced-motion:reduce){.st{opacity:1;animation:none}.output-block,.welcome-box,.ascii-name{animation:none;opacity:1}.meter .mb i{animation:none}}

/* themes */
.theme-light{--bg:#eceaf3;--bg-window:#fbfaff;--bg-darker:#f0eef7;--border:#d6d3e4;--border-dashed:#b6b2cf;--text:#26253a;--text-dim:#66648a;--text-muted:#9997b2;--accent:#c46a34;--accent-2:#de8a52;--accent-rgb:196,106,52;--green:#2f8758;--blue:#3a68c2;--yellow:#a8861e;--purple:#7a4bb0;--cyan:#23827a;--red:#c03c3c}
.theme-light .wallpaper::after{background:rgba(250,246,255,.3)}
.theme-light .terminal-window{box-shadow:0 26px 80px rgba(20,10,60,.22),0 0 0 1px rgba(0,0,0,.06)}
.theme-light .series-key{color:#fff}
.theme-glass{--bg:#0e0e1c;--bg-window:rgba(255,255,255,.06);--bg-darker:rgba(255,255,255,.035);--border:rgba(255,255,255,.13);--border-dashed:rgba(255,255,255,.2);--text:#f2f1ff;--text-dim:#a3a2c6;--text-muted:#76759a;--accent:#9fd8ff;--accent-2:#d6efff;--accent-rgb:159,216,255;--green:#8ef0b4;--blue:#a9c9ff;--yellow:#fde68a;--purple:#cdb8ff;--cyan:#7ae9f5;--red:#ffaaaa}
.theme-glass .wallpaper img{filter:blur(18px) saturate(1.2)}
.theme-glass .wallpaper::after{background:rgba(8,8,28,.42)}
.theme-glass .terminal-window{background:rgba(10,10,26,.45);backdrop-filter:blur(26px) saturate(1.4);-webkit-backdrop-filter:blur(26px) saturate(1.4);border:1px solid rgba(255,255,255,.1);box-shadow:0 26px 80px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.08)}
.theme-glass .autocomplete{background:rgba(18,18,40,.88);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.theme-glass .series-key{color:#0e0e1c}
.theme-retro{--bg:#7d7d7d;--bg-window:#c3c3c3;--bg-darker:#dcdcdc;--border:#000;--border-dashed:#7d7d7d;--text:#000;--text-dim:#3d3d3d;--text-muted:#5d5d5d;--accent:#000080;--accent-2:#000080;--accent-rgb:0,0,128;--green:#006400;--blue:#000080;--yellow:#6b5a00;--purple:#4b0082;--cyan:#005a5a;--red:#8b0000}
.theme-retro .wallpaper img{filter:grayscale(1) blur(3px)}
.theme-retro .wallpaper::after{background:rgba(0,128,128,.55)}
.theme-retro .terminal-window,.theme-retro .close-window{border:1px solid #000;border-radius:0;box-shadow:3px 3px 0 1px #000;backdrop-filter:none}
.theme-retro .titlebar{background:linear-gradient(90deg,#000080,#1084d0);border-bottom:1px solid #000}
.theme-retro .titlebar-title{color:#fff;font-weight:700}
.theme-retro .dot{width:18px;height:16px;border-radius:0;background:#c3c3c3!important;box-shadow:inset -1px -1px #000,inset 1px 1px #fff;font-size:10px;line-height:16px;text-align:center;color:#000;opacity:1}
.theme-retro .dot.red::before{content:"✕"}.theme-retro .dot.yellow::before{content:"_"}.theme-retro .dot.green::before{content:"□"}
.theme-retro .ascii-name{background:none;color:#000080}
.theme-retro .btn,.theme-retro .close-btn,.theme-retro .chip,.theme-retro .site-link,.theme-retro .send{border:1px solid #000;border-radius:0;background:#c3c3c3;box-shadow:inset -2px -2px #7d7d7d,inset 2px 2px #fff;color:#000}
.theme-retro .project-card,.theme-retro .social-link{border-radius:0;background:#d4d4d4}
.theme-retro .series-key{color:#fff}
.theme-retro ::selection{background:#000080;color:#fff}
.theme-phosphor{--bg:#020a04;--bg-window:#04120a;--bg-darker:#030d07;--border:#11402a;--border-dashed:#1d6b45;--text:#9cffc7;--text-dim:#4fbf86;--text-muted:#2f8a5c;--accent:#3dff9a;--accent-2:#b4ffd6;--accent-rgb:61,255,154;--green:#3dff9a;--blue:#7dffd0;--yellow:#c8ff7d;--purple:#7dffb0;--cyan:#7dfff0;--red:#ff9d7d}
.theme-phosphor .wallpaper img{filter:grayscale(1) brightness(.35) blur(8px)}
.theme-phosphor .terminal-window{box-shadow:0 0 0 1px #11402a,0 0 60px rgba(61,255,154,.12)}
.theme-phosphor .terminal-body{text-shadow:0 0 6px rgba(61,255,154,.35)}
.theme-phosphor .series-key{color:#020a04}

/* responsive */
@media (max-width:700px){
 body{padding:0;align-items:stretch}
 .terminal-window,.terminal-window.minimized{max-width:100%;min-height:0;height:var(--vh);max-height:var(--vh);border-radius:0}
 .terminal-window.minimized{height:auto;align-self:center;margin:0 var(--g);border-radius:12px}
 .titlebar{padding:12px var(--g)}
 .titlebar-pad{width:40px}
 .dot{width:13px;height:13px}
 .terminal-body{padding:20px var(--g) 16px}
 .chips{padding:10px var(--g) 0}
 .chip{min-height:44px;padding:4px 16px;font-size:.78rem}
 .input-area{padding:8px var(--g) max(12px,env(safe-area-inset-bottom))}
 .input-field{font-size:16px;min-height:44px}
 .send{width:44px;height:44px}
 .autocomplete{left:-22px;right:-52px;bottom:calc(100% + 9px)}
 .ac-item{min-height:44px}
 .welcome-box{grid-template-columns:1fr}
 .welcome-left{border-right:0;border-bottom:1px dashed var(--border-dashed);padding:20px 16px}
 .welcome-section{padding:16px}
 .nav-item{min-height:44px;align-items:center}
 .ascii-name .l1{display:none}.ascii-name .l2{display:block}
 .dock{display:none}
 .btn,.site-link,.close-btn{min-height:44px}
 .site-grid{grid-template-columns:1fr}
 .project-card{padding:14px 16px}
 .output-line .cmd-name{min-width:12ch}
 .close-body{padding:24px 20px}
}
@media (max-width:380px){
 html{font-size:17px}
 .item{gap:12px}.item .label{min-width:60px}
}

.row-link{display:flex;align-items:baseline;gap:0;text-decoration:none;font-size:.85rem;line-height:1.7;padding-left:2ch;border-radius:3px;transition:background .15s}
.row-link:hover{background:rgba(var(--accent-rgb),.07)}
.row-link .cmd-name{color:var(--accent);font-weight:600;min-width:13ch;flex-shrink:0}
.row-link .cmd-name.dim{color:var(--text-dim);font-weight:400;min-width:10ch}
.row-link .cmd-desc{color:var(--text-dim)}
.row-link .rl-val{color:var(--accent);border-bottom:1px dashed rgba(var(--accent-rgb),.5);overflow-wrap:anywhere}
.row-link .rl-pre{color:var(--text-dim);margin-right:1ch}
.row-link:has(.rl-pre) .cmd-name{min-width:12ch}
@media (min-width:701px){.chips,.send{display:none}.input-area{padding:16px 32px;border-top:1px solid var(--border)}}
@media (max-width:700px){
 .row-link{min-height:44px;align-items:center;padding-left:0}
 .row-link .cmd-name{min-width:12.5ch}
 .mail-link{display:inline-flex;align-items:center;min-height:44px;border-bottom:0;text-decoration:underline dashed;text-underline-offset:4px;text-decoration-color:var(--border-dashed)}
}

.site-grid{grid-template-columns:repeat(auto-fill,minmax(min(232px,100%),1fr))}
.site-link{min-width:0}
@media (max-width:700px){.site-grid{grid-template-columns:minmax(0,1fr)}}

.portrait{font-size:5.6px;line-height:1.1}
@media (max-width:700px){.portrait{font-size:4.9px}}
@media (max-width:370px){.portrait{font-size:4.5px}}

body{color:var(--text)}
.series-head{flex-wrap:wrap;row-gap:0}
@media (max-width:700px){.series-head .dim{flex-basis:100%;font-size:.78rem}}
