
/* ============================================================
   EDIT ME #1 — DESIGN TOKENS
   70% visionOS/macOS Sequoia glass · 20% Nothing dot-matrix/red ·
   10% cyberpunk terminal (contained inside the Terminal app)
   ============================================================ */
:root{
  --bg-1:#eef0f6;
  --bg-2:#f7f1ea;
  --mesh-a:#c8d4ff;
  --mesh-b:#ffd3e6;
  --mesh-c:#c9efdd;
  --mesh-d:#ffe4c2;

  --glass:rgba(255,255,255,.52);
  --glass-strong:rgba(255,255,255,.74);
  --glass-border:rgba(255,255,255,.85);
  --glass-shadow:rgba(32,36,66,.18);
  --hairline:rgba(28,28,30,.10);

  --ink:#1c1c1e;
  --ink-soft:#5b5c63;
  --ink-dim:#9b9ba3;

  --red:#ff2b4d;
  --red-dim:rgba(255,43,77,.14);

  --radius-lg:28px;
  --radius-md:18px;
  --radius-sm:10px;

  --font-display:'Manrope',sans-serif;
  --font-body:'Inter',sans-serif;
  --font-dot:'DotGothic16',monospace;
  --font-mono:'JetBrains Mono',monospace;

  /* terminal-only palette, kept separate so the rest of the OS stays light */
  --term-bg:#050604;
  --term-green:#3dffa0;
  --term-magenta:#ff43e8;
  --term-cyan:#43e8ff;
  --term-dim:#3c4a41;
}

*{box-sizing:border-box; margin:0; padding:0;}
html,body{height:100%;}
body{
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--bg-1);
  overflow:hidden;
  height:100vh;
  width:100vw;
  position:relative;
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--red); color:#fff;}
::-webkit-scrollbar{width:9px; height:9px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:rgba(28,28,30,.18); border-radius:10px;}
::-webkit-scrollbar-thumb:hover{background:var(--red);}
a{color:var(--red); text-decoration:none;}
button{font-family:inherit; cursor:pointer;}
:focus-visible{outline:2px solid var(--red); outline-offset:2px; border-radius:4px;}

/* ============================================================
   WALLPAPER — soft mesh gradient, spatial parallax on mousemove
   ============================================================ */
.wallpaper{position:fixed; inset:0; z-index:0; overflow:hidden; background:
  radial-gradient(ellipse at 30% 0%, var(--bg-2), var(--bg-1) 55%);}
.blob{position:absolute; border-radius:50%; filter:blur(100px); opacity:.65; will-change:transform; transition:transform .35s cubic-bezier(.2,.7,.3,1);}
.blob-1{width:560px; height:560px; background:var(--mesh-a); top:-14%; left:-10%; animation:float1 24s ease-in-out infinite;}
.blob-2{width:480px; height:480px; background:var(--mesh-b); bottom:-14%; right:-8%; animation:float2 28s ease-in-out infinite;}
.blob-3{width:420px; height:420px; background:var(--mesh-c); top:38%; right:18%; animation:float3 32s ease-in-out infinite;}
@keyframes float1{0%,100%{transform:translate(0,0) scale(1);} 50%{transform:translate(60px,50px) scale(1.1);}}
@keyframes float2{0%,100%{transform:translate(0,0) scale(1);} 50%{transform:translate(-60px,-40px) scale(1.08);}}
@keyframes float3{0%,100%{transform:translate(0,0) scale(1);} 50%{transform:translate(-30px,55px) scale(.92);}}
.noise{position:fixed; inset:0; z-index:1; pointer-events:none; opacity:.02; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}

/* ============================================================
   BOOT SCREEN — the cyberpunk 10%, as a transitional moment:
   dark dot-matrix shell boot dissolving into the light spatial OS
   ============================================================ */
#boot{position:fixed; inset:0; z-index:999; background:#08090c;
  display:flex; align-items:center; justify-content:center; flex-direction:column;
  font-family:var(--font-dot); transition:opacity .6s ease, visibility .6s;}
#boot.hidden{opacity:0; visibility:hidden; pointer-events:none;}
#boot-log{width:min(560px,86vw); font-size:14px; line-height:2; color:var(--term-green); letter-spacing:.5px;}
#boot-log .dim{color:#3d4a44;}
#boot-bar-track{width:min(560px,86vw); height:3px; background:rgba(255,255,255,.08); border-radius:4px; margin-top:22px; overflow:hidden;}
#boot-bar{height:100%; width:0%; background:linear-gradient(90deg,var(--red),#ff8a6b); transition:width .25s linear;}
.cursor-blink{display:inline-block; width:8px; height:14px; background:var(--term-green); margin-left:2px; animation:blink 1s step-end infinite; vertical-align:middle;}
@keyframes blink{50%{opacity:0;}}

/* ============================================================
   TOP BAR — thin floating glass strip, dot-matrix clock, red live-dot
   ============================================================ */
#topbar{position:fixed; top:0; left:0; right:0; height:42px; z-index:60;
  display:flex; align-items:center; justify-content:space-between; padding:0 18px;
  background:var(--glass); backdrop-filter:blur(30px) saturate(180%); -webkit-backdrop-filter:blur(30px) saturate(180%);
  border-bottom:1px solid var(--hairline); font-family:var(--font-body); font-size:13px;}
#topbar .brand{display:flex; align-items:center; gap:9px; font-weight:700; letter-spacing:.2px; font-family:var(--font-display); color:var(--ink);}
#topbar .brand .dot{width:7px; height:7px; border-radius:50%; background:var(--red); box-shadow:0 0 0 4px var(--red-dim); animation:pulse-dot 2.4s ease-in-out infinite;}
@keyframes pulse-dot{0%,100%{opacity:1;} 50%{opacity:.45;}}
#topbar .right{display:flex; align-items:center; gap:14px; color:var(--ink-soft);}
#topbar button.icon-btn{background:none; border:1px solid transparent; color:var(--ink-soft); font-size:11.5px; font-family:var(--font-dot); letter-spacing:.4px; display:flex; align-items:center; gap:6px; padding:5px 10px; border-radius:100px; transition:.2s;}
#topbar button.icon-btn:hover{background:var(--glass-strong); border-color:var(--hairline); color:var(--ink);}
#clock{color:var(--ink); font-weight:400; font-family:var(--font-dot); font-size:14px; letter-spacing:1px;}

/* ============================================================
   DESKTOP ICONS
   ============================================================ */
#desktop{position:fixed; inset:42px 0 78px 0; z-index:5; counter-reset:winIndex;}
.icon-grid{position:absolute; top:24px; left:24px; display:flex; flex-direction:column; gap:20px;}
.desk-icon{width:84px; display:flex; flex-direction:column; align-items:center; gap:9px; background:none; border:none; color:var(--ink); padding:8px 4px; border-radius:16px; transition:.15s;}
.desk-icon:hover, .desk-icon:focus-visible{background:rgba(255,255,255,.35);}
.desk-icon .glyph{width:54px; height:54px; border-radius:18px; display:flex; align-items:center; justify-content:center; font-size:23px; position:relative;
  background:var(--glass-strong); border:1px solid var(--glass-border); backdrop-filter:blur(14px);
  box-shadow:0 1px 0 rgba(255,255,255,.9) inset, 0 10px 22px -8px var(--glass-shadow);}
.desk-icon .glyph::after{content:''; position:absolute; top:6px; right:6px; width:4px; height:4px; border-radius:50%; background:var(--hairline);}
.desk-icon span{font-family:var(--font-dot); font-size:10.5px; letter-spacing:.6px; text-align:center; color:var(--ink-soft); text-transform:uppercase;}

/* ============================================================
   DOCK — magnification handled in JS, styling here
   ============================================================ */
#dock-wrap{position:fixed; bottom:16px; left:50%; transform:translateX(-50%); z-index:70;}
#dock{display:flex; align-items:flex-end; gap:8px; padding:10px; background:var(--glass); backdrop-filter:blur(34px) saturate(180%); -webkit-backdrop-filter:blur(34px) saturate(180%);
  border:1px solid var(--glass-border); border-radius:26px; box-shadow:0 1px 0 rgba(255,255,255,.85) inset, 0 20px 50px -12px var(--glass-shadow);}
.dock-btn{position:relative; width:52px; height:52px; border-radius:16px; border:1px solid var(--hairline); background:var(--glass-strong);
  display:flex; align-items:center; justify-content:center; font-size:22px; color:var(--ink); transition:background .18s, border-color .18s;
  transform-origin:bottom center; will-change:transform;}
.dock-btn:hover{background:#fff; border-color:rgba(28,28,30,.16);}
.dock-btn.active::after{content:''; position:absolute; bottom:-8px; left:50%; transform:translateX(-50%); width:4px; height:4px; border-radius:50%; background:var(--red); box-shadow:0 0 6px var(--red);}
.dock-btn .tip{position:absolute; bottom:66px; left:50%; transform:translateX(-50%); background:var(--ink); color:#fff; border:1px solid rgba(255,255,255,.1); padding:4px 10px; border-radius:8px; font-size:10.5px; font-family:var(--font-dot);
  white-space:nowrap; opacity:0; pointer-events:none; transition:.15s;}
.dock-btn:hover .tip{opacity:1; transform:translateX(-50%) translateY(-4px);}

/* ============================================================
   WINDOWS
   ============================================================ */
.window{position:absolute; min-width:300px; min-height:220px; background:var(--glass); backdrop-filter:blur(36px) saturate(180%); -webkit-backdrop-filter:blur(36px) saturate(180%);
  border:1px solid var(--glass-border); border-radius:var(--radius-lg);
  box-shadow:0 1px 0 rgba(255,255,255,.9) inset, 0 30px 70px -16px var(--glass-shadow), 0 2px 10px rgba(30,35,70,.06);
  display:flex; flex-direction:column; overflow:hidden; opacity:0; transform:scale(.95) translateY(14px); pointer-events:none; transition:opacity .22s ease, transform .22s ease;
  counter-increment:winIndex;}
.window.open{opacity:1; transform:scale(1) translateY(0); pointer-events:auto;}
.window.minimized{opacity:0; transform:scale(.85) translateY(40px); pointer-events:none;}
.win-titlebar{display:flex; align-items:center; gap:12px; padding:12px 16px; background:rgba(255,255,255,.35); border-bottom:1px solid var(--hairline); cursor:grab; user-select:none;}
.win-titlebar:active{cursor:grabbing;}
.traffic{display:flex; gap:7px;}
.traffic button{width:12px; height:12px; border-radius:50%; border:1.4px solid rgba(28,28,30,.28); background:transparent; padding:0; position:relative; transition:.15s;}
.traffic button::before{content:''; position:absolute; inset:0; border-radius:50%; opacity:0; transition:.15s;}
.traffic:hover .tf-close{border-color:var(--red);}
.traffic:hover .tf-close::before{background:var(--red); opacity:1;}
.traffic:hover .tf-min::before{background:#f5b942; opacity:1;}
.traffic:hover .tf-max::before{background:#3ecf6a; opacity:1;}
.win-title{font-family:var(--font-body); font-weight:600; font-size:12.5px; color:var(--ink-soft); letter-spacing:.2px; flex:1; display:flex; align-items:center;}
.win-title::before{content:"(0" counter(winIndex) ")"; font-family:var(--font-dot); color:var(--red); margin-right:8px; font-size:11.5px;}
.win-body{flex:1; overflow:auto; padding:24px 26px;}
.resize-handle{position:absolute; width:16px; height:16px; right:2px; bottom:2px; cursor:nwse-resize; opacity:.45;}
.resize-handle::before{content:''; position:absolute; right:3px; bottom:3px; width:8px; height:8px; border-right:2px solid var(--ink-dim); border-bottom:2px solid var(--ink-dim);}

/* section heading style reused across apps */
.h-eyebrow{font-family:var(--font-dot); font-size:11px; letter-spacing:2px; text-transform:uppercase; color:var(--red); margin-bottom:6px;}
.h-title{font-family:var(--font-display); font-size:27px; font-weight:800; margin-bottom:14px; letter-spacing:-.3px;}
.pill{display:inline-flex; align-items:center; font-family:var(--font-dot); font-size:11px; padding:4px 11px; border-radius:100px; border:1px solid var(--hairline); background:var(--glass-strong); color:var(--ink-soft);}

/* ---- About ---- */
.about-grid{display:flex; gap:26px; flex-wrap:wrap;}
.avatar{width:104px; height:104px; border-radius:26px; flex-shrink:0; background:linear-gradient(135deg,var(--mesh-a),var(--mesh-b)); display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-size:36px; font-weight:800; color:var(--ink); box-shadow:0 1px 0 rgba(255,255,255,.9) inset, 0 14px 30px -10px var(--glass-shadow);}
.about-bio p{color:var(--ink-soft); line-height:1.7; margin-bottom:14px; max-width:520px;}
.skills-row{display:flex; flex-wrap:wrap; gap:8px; margin-top:6px;}
.fact-list{margin-top:18px; display:grid; gap:10px;}
.fact-list li{list-style:none; display:flex; gap:10px; font-size:13.5px; color:var(--ink-soft);}
.fact-list li::before{content:'●'; font-size:6px; color:var(--red); margin-top:6px;}
.resume-btn{margin-top:20px; display:inline-flex; align-items:center; gap:8px; padding:11px 20px; border-radius:100px; background:var(--red); color:#fff; font-weight:700; font-size:13px; border:none; box-shadow:0 10px 24px -8px var(--red-dim);}

/* ---- Projects ---- */
.proj-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:16px;}
.proj-card{background:var(--glass-strong); border:1px solid var(--hairline); border-radius:var(--radius-md); padding:18px; transition:.2s; cursor:default;}
.proj-card:hover{border-color:var(--red); transform:translateY(-3px); box-shadow:0 16px 34px -14px var(--glass-shadow);}
.proj-card .proj-top{display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:10px;}
.proj-card h3{font-family:var(--font-display); font-size:16px; font-weight:700; color:var(--ink);}
.proj-card p{font-size:13px; color:var(--ink-soft); line-height:1.6; margin:10px 0 12px;}
.proj-stack{display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px;}
.proj-stack span{font-family:var(--font-dot); font-size:10.5px; letter-spacing:.3px; color:var(--red); background:var(--red-dim); padding:2px 8px; border-radius:6px;}
.proj-link{font-family:var(--font-body); font-weight:600; font-size:12.5px; color:var(--red);}
.year-tag{font-family:var(--font-dot); font-size:10.5px; color:var(--ink-dim);}

/* ---- Contact ---- */
.link-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:12px; margin-top:16px;}
.link-card{display:flex; align-items:center; gap:12px; background:var(--glass-strong); border:1px solid var(--hairline); border-radius:var(--radius-md); padding:14px 16px; transition:.2s;}
.link-card:hover{border-color:var(--red); background:#fff;}
.link-card .lg{width:38px; height:38px; border-radius:12px; background:var(--glass); display:flex; align-items:center; justify-content:center; font-size:18px;}
.link-card .lt{font-size:13.5px; font-weight:600; color:var(--ink);}
.link-card .ls{font-size:11px; color:var(--ink-dim); font-family:var(--font-dot);}
.msg-form{margin-top:24px; display:grid; gap:10px; max-width:440px;}
.msg-form input, .msg-form textarea{background:var(--glass-strong); border:1px solid var(--hairline); border-radius:12px; padding:11px 13px; color:var(--ink); font-family:var(--font-body); font-size:13.5px;}
.msg-form textarea{resize:vertical; min-height:80px;}
.msg-form button{padding:11px; border-radius:12px; border:none; background:var(--red); color:#fff; font-weight:700; font-size:13.5px;}

/* ---- Terminal — the 10% cyberpunk, contained ---- */
.term-body{background:var(--term-bg); font-family:var(--font-mono); font-size:13px; height:100%; padding:16px 18px; overflow-y:auto; position:relative;}
.term-body::after{content:''; position:absolute; inset:0; pointer-events:none; background:repeating-linear-gradient(rgba(255,255,255,.03) 0 1px, transparent 1px 3px); opacity:.6;}
.term-body::before{content:''; position:absolute; inset:0; pointer-events:none; box-shadow:inset 0 0 80px rgba(0,0,0,.6); z-index:2;}
#term-log{color:var(--term-green); line-height:1.75; white-space:pre-wrap; word-break:break-word; position:relative; z-index:1;}
#term-log .muted{color:var(--term-dim);}
#term-log .accent{color:var(--term-cyan);}
#term-log .warn{color:var(--term-magenta);}
.term-input-row{display:flex; align-items:center; gap:8px; color:var(--term-green); position:relative; z-index:1;}
.term-input-row .prompt{color:var(--term-magenta);}
#term-input{flex:1; background:none; border:none; color:var(--term-green); font-family:var(--font-mono); font-size:13px; caret-color:var(--term-green);}
#term-input:focus{outline:none;}

/* ---- Guestbook ---- */
.gb-form{display:flex; gap:10px; margin-bottom:18px; flex-wrap:wrap;}
.gb-form input, .gb-form textarea{background:var(--glass-strong); border:1px solid var(--hairline); border-radius:12px; padding:9px 12px; color:var(--ink); font-family:var(--font-body); font-size:13px;}
.gb-form input{flex:1; min-width:140px;}
.gb-form textarea{width:100%; min-height:60px; resize:vertical;}
.gb-form button{padding:9px 18px; border-radius:100px; border:none; background:var(--red); color:#fff; font-weight:700; font-size:12.5px;}
.gb-entry{border:1px solid var(--hairline); background:var(--glass-strong); border-radius:14px; padding:12px 14px; margin-bottom:10px;}
.gb-entry .gb-head{display:flex; justify-content:space-between; font-family:var(--font-dot); font-size:11px; color:var(--red); margin-bottom:6px;}
.gb-entry p{font-size:13.5px; color:var(--ink-soft); line-height:1.55;}
.gb-note{font-size:11px; color:var(--ink-dim); font-family:var(--font-dot); margin-top:2px;}

/* ---- Weather ---- */
.wx-hero{border-radius:22px; padding:26px; display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
  background:linear-gradient(135deg, var(--wx-a,#cfe0ff), var(--wx-b,#eef4ff)); border:1px solid var(--hairline); transition:background 1s ease;}
.wx-hero .wx-left{display:flex; align-items:center; gap:16px;}
.wx-emoji{font-size:52px; line-height:1;}
.wx-temp{font-family:var(--font-display); font-size:52px; font-weight:800; color:var(--ink); letter-spacing:-1px;}
.wx-cond{font-family:var(--font-dot); font-size:12px; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.5px; margin-top:4px;}
.wx-loc{font-family:var(--font-body); font-weight:700; font-size:15px; color:var(--ink); margin-top:2px;}
.wx-meta{display:grid; gap:6px; text-align:right; font-family:var(--font-dot); font-size:11px; color:var(--ink-soft);}
.wx-forecast{display:grid; grid-template-columns:repeat(auto-fit,minmax(80px,1fr)); gap:10px; margin-top:18px;}
.wx-day{background:var(--glass-strong); border:1px solid var(--hairline); border-radius:14px; padding:12px 8px; text-align:center;}
.wx-day .wd-name{font-family:var(--font-dot); font-size:10.5px; color:var(--ink-dim); text-transform:uppercase; margin-bottom:6px;}
.wx-day .wd-emoji{font-size:22px; margin-bottom:6px;}
.wx-day .wd-range{font-family:var(--font-body); font-size:12px; font-weight:600; color:var(--ink);}
.wx-day .wd-range span{color:var(--ink-dim); font-weight:400;}
.wx-actions{display:flex; gap:10px; margin-top:20px; flex-wrap:wrap;}
.wx-actions button{padding:9px 16px; border-radius:100px; border:1px solid var(--hairline); background:var(--glass-strong); color:var(--ink); font-family:var(--font-body); font-weight:600; font-size:12.5px; transition:.15s;}
.wx-actions button:hover{border-color:var(--red); color:var(--red);}
.wx-status{font-family:var(--font-dot); font-size:11px; color:var(--ink-dim); margin-top:14px;}

/* ---- Map ---- */
.map-wrap{display:flex; gap:16px; height:100%;}
.map-sidebar{width:210px; flex-shrink:0; overflow-y:auto; padding-right:4px;}
.map-entry{background:var(--glass-strong); border:1px solid var(--hairline); border-radius:14px; padding:11px 13px; margin-bottom:9px; cursor:pointer; transition:.15s;}
.map-entry:hover, .map-entry.active{border-color:var(--red); background:#fff;}
.map-entry .me-year{font-family:var(--font-dot); font-size:10.5px; color:var(--red);}
.map-entry .me-label{font-family:var(--font-body); font-weight:700; font-size:13px; color:var(--ink); margin-top:3px;}
.map-entry .me-city{font-family:var(--font-dot); font-size:10.5px; color:var(--ink-dim); margin-top:2px;}
.map-canvas-wrap{flex:1; border-radius:18px; overflow:hidden; border:1px solid var(--hairline); position:relative;}
#life-map{width:100%; height:100%; background:var(--glass-strong);}
.leaflet-popup-content-wrapper{background:var(--ink); color:#fff; border-radius:12px; font-family:var(--font-body);}
.leaflet-popup-content{font-size:12.5px; margin:10px 12px;}
.leaflet-popup-content b{font-family:var(--font-display);}
.leaflet-popup-tip{background:var(--ink);}
.map-pin{width:14px; height:14px; border-radius:50% 50% 50% 0; background:var(--red); transform:rotate(-45deg); border:2px solid #fff; box-shadow:0 2px 8px rgba(0,0,0,.3);}

/* ---- Projects filter tabs ---- */
.proj-tabs{display:flex; gap:6px; margin-bottom:16px; flex-wrap:wrap;}
.proj-tab{font-family:var(--font-dot); font-size:11px; letter-spacing:.4px; text-transform:uppercase; padding:6px 13px; border-radius:100px; border:1px solid var(--hairline); background:var(--glass-strong); color:var(--ink-soft); transition:.15s;}
.proj-tab.active{background:var(--red); border-color:var(--red); color:#fff;}
.proj-card.hide{display:none;}

/* ---- Contact copy-email ---- */
.copy-email-btn{padding:6px 12px; border-radius:100px; border:1px solid var(--hairline); background:var(--glass-strong); color:var(--ink-soft); font-family:var(--font-dot); font-size:10.5px; margin-left:8px; transition:.15s;}
.copy-email-btn:hover{border-color:var(--red); color:var(--red);}

/* ---- Matrix rain overlay (stays fully cyberpunk, Konami easter egg) ---- */
#matrix-canvas{position:fixed; inset:0; z-index:500; display:none; background:#000;}

/* ---- toast ---- */
#toast{position:fixed; bottom:98px; left:50%; transform:translateX(-50%) translateY(20px); z-index:80; background:var(--ink); color:#fff; border:1px solid rgba(255,255,255,.1);
  padding:10px 18px; border-radius:100px; font-family:var(--font-dot); font-size:12px; letter-spacing:.3px; opacity:0; transition:.3s; pointer-events:none;}
#toast.show{opacity:1; transform:translateX(-50%) translateY(0);}

/* ---- Mobile ---- */
@media (max-width:720px){
  .icon-grid{top:10px; left:10px; gap:14px;}
  .desk-icon{width:66px;}
  .desk-icon .glyph{width:44px; height:44px; font-size:19px;}
  .window{left:3vw !important; top:54px !important; width:94vw !important; height:74vh !important;}
  #dock{gap:6px; padding:8px;}
  .dock-btn{width:44px; height:44px; font-size:18px;}
  .about-grid{flex-direction:column;}
}
@media (prefers-reduced-motion: reduce){
  .blob, .cursor-blink{animation:none !important;}
  .window, .dock-btn, .desk-icon{transition:none !important;}
}

/* ============================================================
   LUMEN REFINEMENT — a single dark spatial language layered over
   the original applications. Existing app hooks remain unchanged.
   ============================================================ */
:root{
  --bg-1:#060814; --bg-2:#0c1024; --mesh-a:#263b7a; --mesh-b:#5c2369;
  --mesh-c:#0d6c70; --mesh-d:#9d5c27; --glass:rgba(12,16,36,.56);
  --glass-strong:rgba(22,28,56,.78); --glass-border:rgba(191,210,255,.17);
  --glass-shadow:rgba(0,0,0,.55); --hairline:rgba(195,211,255,.14);
  --ink:#f4f7ff; --ink-soft:#b3bfdc; --ink-dim:#6e7b9b; --red:#8b7bff;
  --red-dim:rgba(139,123,255,.19); --radius-lg:24px; --radius-md:16px;
}
body{background:#060814;color:var(--ink);letter-spacing:-.01em;}
body::before{content:'';position:fixed;inset:0;z-index:2;pointer-events:none;background:linear-gradient(120deg,rgba(255,255,255,.045),transparent 22%,transparent 76%,rgba(130,102,255,.09));}
.wallpaper{background:radial-gradient(ellipse at 45% 0%,#17244a 0%,#090c1c 47%,#050611 100%);}
.wallpaper::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(148,170,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(148,170,255,.045) 1px,transparent 1px);background-size:56px 56px;mask-image:linear-gradient(to bottom,black,transparent 70%);}
.blob{filter:blur(116px);opacity:.36;mix-blend-mode:screen;}
.blob-1{width:680px;height:680px;top:-25%;left:-15%;}.blob-2{width:620px;height:620px;bottom:-30%;right:-18%;}.blob-3{width:500px;height:500px;top:35%;right:22%;}
.noise{opacity:.06;mix-blend-mode:soft-light;}
#boot{background:#050611;background-image:radial-gradient(circle at 50% 44%,rgba(110,92,255,.22),transparent 29%);}
#boot::after{content:'L U M E N  /  PERSONAL INTERFACE';position:absolute;top:18px;left:50%;transform:translateX(-50%);font:10px var(--font-mono);letter-spacing:3px;color:rgba(205,212,255,.55);white-space:nowrap;}
#boot-log{color:#bfb8ff;font-family:var(--font-mono);font-size:12px;}#boot-bar{background:linear-gradient(90deg,#61d7ff,#9e7bff,#ff88c7);}
#topbar{top:12px;left:50%;right:auto;transform:translateX(-50%);height:44px;width:min(920px,calc(100vw - 32px));border:1px solid var(--glass-border);border-radius:15px;background:rgba(10,14,34,.58);box-shadow:0 16px 50px rgba(0,0,0,.22),inset 0 1px rgba(255,255,255,.07);padding:0 14px;}
#topbar .brand{font-size:12px;letter-spacing:1.1px;color:var(--ink);}#topbar .brand .dot{background:#67e7ce;box-shadow:0 0 0 4px rgba(103,231,206,.13);}
#topbar .right{gap:8px;}#topbar button.icon-btn{color:var(--ink-soft);font-size:10px;background:rgba(255,255,255,.035);border-color:var(--hairline);padding:6px 9px;}#topbar button.icon-btn:hover{color:#fff;background:rgba(255,255,255,.1);}#clock{color:#fff;font:11px var(--font-mono);letter-spacing:1.2px;padding-left:4px;}
#desktop{inset:66px 0 92px;}.icon-grid{top:28px;left:26px;gap:11px;}.desk-icon{width:92px;gap:8px;color:var(--ink-soft);border:1px solid transparent;}.desk-icon:hover,.desk-icon:focus-visible{background:rgba(148,170,255,.08);border-color:rgba(169,184,255,.12);box-shadow:0 14px 24px rgba(0,0,0,.12);}.desk-icon .glyph{width:55px;height:55px;border-radius:18px;background:linear-gradient(145deg,rgba(43,53,100,.88),rgba(12,16,34,.88));border-color:rgba(192,205,255,.18);box-shadow:inset 0 1px rgba(255,255,255,.16),0 12px 20px -12px #000;}.desk-icon .glyph::after{background:#67e7ce;box-shadow:0 0 8px #67e7ce;}.desk-icon span{color:#c6d1ed;font:9.5px var(--font-mono);letter-spacing:1px;text-transform:none;}
.window{background:linear-gradient(135deg,rgba(27,35,70,.76),rgba(10,14,32,.78));border-color:rgba(202,214,255,.16);border-radius:22px;box-shadow:inset 0 1px rgba(255,255,255,.13),0 38px 90px -24px rgba(0,0,0,.86),0 0 0 1px rgba(77,101,193,.05);}.window::before{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,rgba(255,255,255,.075),transparent 20%);z-index:2;}.window.open{animation:lumen-open .48s cubic-bezier(.16,1,.3,1) both;}@keyframes lumen-open{from{opacity:0;transform:translateY(22px) scale(.96);filter:blur(10px)}to{opacity:1;transform:none;filter:blur(0)}}
.win-titlebar{background:rgba(255,255,255,.032);border-bottom-color:var(--hairline);padding:13px 16px;}.win-title{color:#d6dff8;font:11px var(--font-mono);letter-spacing:.7px;}.win-title::before{content:'◈';font-family:inherit;color:#67e7ce;margin-right:8px;}.traffic{gap:6px;}.traffic button{width:10px;height:10px;border-radius:3px;border:1px solid rgba(235,240,255,.34);}.traffic button::before{border-radius:2px;}.traffic:hover .tf-close::before{background:#ff78ae;}.traffic:hover .tf-min::before{background:#ffd56a;}.traffic:hover .tf-max::before{background:#67e7ce;}.win-body{padding:25px 26px;}.h-eyebrow{color:#89f4db;font:10px var(--font-mono);letter-spacing:2.1px;}.h-title{color:#f5f7ff;font-size:29px;letter-spacing:-1px;}.pill{background:rgba(151,159,255,.1);border-color:rgba(177,189,255,.16);color:#c5d0ed;font:10px var(--font-mono);}
.avatar{background:linear-gradient(135deg,#70e3d3,#7b76f5 52%,#e677bf);color:#0b1230;border-radius:28px;box-shadow:inset 0 1px rgba(255,255,255,.55),0 20px 38px -16px rgba(88,105,255,.55);}.about-bio p,.fact-list li{color:var(--ink-soft);}.fact-list li::before{color:#67e7ce;}.resume-btn,.msg-form button,.gb-form button{background:linear-gradient(115deg,#7670ff,#ad74eb);box-shadow:0 14px 30px -12px rgba(137,123,255,.7);}.proj-card,.link-card,.gb-entry,.wx-day{background:rgba(255,255,255,.045);border-color:var(--hairline);}.proj-card:hover,.link-card:hover,.map-entry:hover,.map-entry.active{border-color:#8b7bff;background:rgba(139,123,255,.12);box-shadow:0 18px 34px -18px rgba(0,0,0,.7);}.proj-card h3,.link-card .lt,.wx-temp,.wx-loc,.wx-day .wd-range,.map-entry .me-label{color:#f4f7ff;}.proj-card p,.link-card .ls,.gb-entry p,.wx-status,.wx-day .wd-name,.map-entry .me-city{color:var(--ink-soft);}.proj-stack span{color:#bcb3ff;background:rgba(139,123,255,.14);}.proj-link,.map-entry .me-year{color:#89f4db;}.link-card .lg{background:rgba(139,123,255,.14);}.msg-form input,.msg-form textarea,.gb-form input,.gb-form textarea{background:rgba(4,7,19,.38);border-color:var(--hairline);color:#f4f7ff;}.copy-email-btn{color:#b5c3e4;background:rgba(255,255,255,.04);border-color:var(--hairline);}.copy-email-btn:hover{color:#89f4db;border-color:#89f4db;}
.term-body{background:radial-gradient(circle at 80% 0%,rgba(33,106,110,.19),transparent 35%),#060a10;}.wx-hero{background:linear-gradient(135deg,rgba(70,100,190,.45),rgba(73,33,106,.55))!important;border-color:rgba(208,218,255,.14);}.wx-meta{color:#c8d3ee;}.wx-actions button{color:#dce5fb;background:rgba(255,255,255,.05);border-color:var(--hairline);}.wx-actions button:hover{border-color:#89f4db;color:#89f4db;}.map-canvas-wrap{border-color:var(--hairline);}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#121a39;}.map-pin{background:#67e7ce;}.proj-tab{background:rgba(255,255,255,.04);border-color:var(--hairline);color:#b8c4df;}.proj-tab.active{background:linear-gradient(100deg,#6b68ec,#a46cdf);border-color:transparent;}
#dock-wrap{bottom:17px;}#dock{gap:7px;padding:9px;background:rgba(11,15,34,.7);border-color:rgba(203,215,255,.17);border-radius:19px;box-shadow:inset 0 1px rgba(255,255,255,.1),0 24px 44px -18px rgba(0,0,0,.74);}.dock-btn{width:48px;height:48px;border-radius:14px;color:#ecf1ff;background:linear-gradient(145deg,rgba(68,79,134,.54),rgba(15,20,44,.8));border-color:rgba(187,203,255,.13);}.dock-btn:hover{background:linear-gradient(145deg,rgba(109,105,235,.75),rgba(33,36,78,.95));border-color:rgba(207,211,255,.4);}.dock-btn.active::after{background:#89f4db;box-shadow:0 0 9px #89f4db;}.dock-btn .tip{background:#151b38;color:#eef3ff;border-color:rgba(255,255,255,.1);font-family:var(--font-mono);}
#toast{bottom:94px;background:#171d3c;border-color:rgba(179,193,255,.18);box-shadow:0 18px 38px rgba(0,0,0,.38);}

/* desktop HUD, search, notification drawer and contextual command surface */
.hud{position:absolute;right:30px;top:25px;width:248px;display:grid;gap:11px;z-index:4;pointer-events:none;}.hud-card{padding:16px;border:1px solid rgba(193,209,255,.14);border-radius:17px;background:linear-gradient(145deg,rgba(25,34,70,.58),rgba(10,13,31,.42));backdrop-filter:blur(18px);box-shadow:inset 0 1px rgba(255,255,255,.08),0 18px 34px -23px #000;}.hud-kicker{font:9px var(--font-mono);letter-spacing:1.7px;color:#89f4db;text-transform:uppercase;}.hud-value{font:700 22px var(--font-display);color:#f5f7ff;margin-top:7px;letter-spacing:-.7px;}.hud-meta{font:10px var(--font-mono);color:#96a5c6;margin-top:6px;}.signal{display:flex;gap:4px;align-items:end;height:14px;margin-top:12px;}.signal i{display:block;width:3px;border-radius:5px;background:#89f4db;box-shadow:0 0 8px rgba(137,244,219,.6);}.signal i:nth-child(1){height:4px}.signal i:nth-child(2){height:7px}.signal i:nth-child(3){height:10px}.signal i:nth-child(4){height:14px}.hud-orb{position:absolute;width:160px;height:160px;right:-60px;bottom:-68px;border-radius:50%;border:1px solid rgba(157,177,255,.17);box-shadow:inset 0 0 32px rgba(111,130,255,.17),0 0 40px rgba(93,71,255,.18);}.hud-orb::before,.hud-orb::after{content:'';position:absolute;inset:22px;border:1px solid rgba(123,223,211,.22);border-radius:50%;}.hud-orb::after{inset:49px;background:#89f4db;box-shadow:0 0 16px #89f4db;}
.top-actions{display:flex;gap:6px;align-items:center;}.top-action{width:26px;height:26px;border-radius:8px;border:1px solid var(--hairline);background:rgba(255,255,255,.035);color:#c6d0eb;font:13px var(--font-mono);transition:.2s;}.top-action:hover{background:rgba(139,123,255,.22);color:#fff;}.search-layer{position:fixed;inset:0;z-index:200;display:grid;place-items:start center;padding-top:15vh;background:rgba(3,5,14,.42);backdrop-filter:blur(11px);opacity:0;visibility:hidden;transition:.24s;}.search-layer.open{opacity:1;visibility:visible;}.command-box{width:min(560px,calc(100vw - 30px));overflow:hidden;border:1px solid rgba(199,210,255,.22);border-radius:20px;background:linear-gradient(135deg,rgba(29,37,76,.96),rgba(10,14,32,.98));box-shadow:0 34px 100px rgba(0,0,0,.6);transform:translateY(-12px) scale(.98);transition:.28s cubic-bezier(.16,1,.3,1);}.search-layer.open .command-box{transform:none;}.command-input{display:flex;align-items:center;gap:11px;padding:15px 17px;border-bottom:1px solid var(--hairline);}.command-input span{color:#89f4db;font:18px var(--font-mono);}.command-input input{flex:1;background:none;border:0;outline:0;color:#f5f7ff;font:15px var(--font-body);}.command-input kbd{font:9px var(--font-mono);color:#8d9bbd;border:1px solid var(--hairline);padding:3px 5px;border-radius:5px;}.command-results{padding:8px;max-height:330px;overflow:auto;}.command-result{width:100%;display:flex;align-items:center;gap:12px;text-align:left;border:0;border-radius:12px;padding:11px;background:transparent;color:#dfe7fb;transition:.15s;}.command-result:hover,.command-result.focused{background:rgba(139,123,255,.16);}.command-result b{font:12px var(--font-body);display:block;}.command-result small{font:9px var(--font-mono);color:#93a2c4;display:block;margin-top:2px;}.command-icon{width:28px;height:28px;display:grid;place-items:center;border-radius:8px;background:rgba(137,244,219,.1);font-size:14px;}.notify-panel{position:fixed;top:68px;right:max(16px,calc((100vw - 920px)/2));z-index:100;width:310px;padding:12px;border:1px solid var(--glass-border);border-radius:17px;background:rgba(13,18,42,.88);backdrop-filter:blur(28px);box-shadow:0 24px 60px rgba(0,0,0,.48);opacity:0;visibility:hidden;transform:translateY(-8px);transition:.2s;}.notify-panel.open{opacity:1;visibility:visible;transform:none;}.notify-head{display:flex;justify-content:space-between;align-items:center;padding:4px 4px 11px;font:11px var(--font-mono);color:#eef3ff;letter-spacing:.8px;}.notify-head button{border:0;background:none;color:#89f4db;font:9px var(--font-mono);}.notice{display:flex;gap:10px;padding:12px;border-radius:12px;background:rgba(255,255,255,.045);border:1px solid rgba(196,208,255,.09);}.notice+.notice{margin-top:8px;}.notice-mark{color:#89f4db;font-size:14px;}.notice b{display:block;font:11px var(--font-body);color:#fff;}.notice p{margin-top:3px;color:#9eacce;font:10px/1.45 var(--font-body);}.context-menu{position:fixed;z-index:220;min-width:175px;padding:6px;border:1px solid var(--glass-border);border-radius:12px;background:#151b3b;box-shadow:0 18px 40px rgba(0,0,0,.5);opacity:0;visibility:hidden;transform:scale(.96);transform-origin:top left;transition:.12s;}.context-menu.open{opacity:1;visibility:visible;transform:none;}.context-menu button{width:100%;border:0;border-radius:8px;padding:9px 10px;text-align:left;background:none;color:#dce5f9;font:11px var(--font-body);}.context-menu button:hover{background:rgba(139,123,255,.18);}.context-menu hr{border:0;border-top:1px solid var(--hairline);margin:4px 0;}
@media(max-width:720px){#topbar{top:8px;width:calc(100vw - 16px);}.icon-grid{top:8px;left:8px;gap:8px;}.hud{display:none;}#desktop{inset:60px 0 72px;}.desk-icon{width:68px;}.desk-icon .glyph{width:44px;height:44px;}.window{border-radius:19px!important;}.win-body{padding:21px 18px;}.h-title{font-size:25px;}#dock-wrap{width:100%;bottom:9px;display:flex;justify-content:center;overflow-x:auto;padding:0 8px;}#dock{gap:4px;padding:6px;}.dock-btn{width:40px;height:40px;font-size:17px;flex:none;}.dock-btn:nth-child(7){display:none;}.top-actions{display:none;}.notify-panel{right:8px;top:60px;width:calc(100vw - 16px);}.map-wrap{flex-direction:column;}.map-sidebar{width:100%;display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;padding-bottom:4px;}.map-entry{min-width:150px;margin:0;}.map-canvas-wrap{min-height:240px;}.proj-grid{grid-template-columns:1fr;}}

/* ============================================================
   ARCHIVE EDITION — aged-paper desktop built from the supplied
   parchment reference: #F8EDCF / umber ink / faded vermilion.
   ============================================================ */
:root{--bg-1:#f8edcf;--bg-2:#f1dfb8;--mesh-a:#e9d39d;--mesh-b:#e7c4a5;--mesh-c:#c6c796;--mesh-d:#d3a56b;--glass:rgba(255,249,231,.74);--glass-strong:rgba(255,251,237,.88);--glass-border:rgba(84,57,31,.28);--glass-shadow:rgba(67,43,22,.27);--hairline:rgba(78,52,27,.22);--ink:#2b2118;--ink-soft:#5e4b38;--ink-dim:#9b846b;--red:#aa4535;--red-dim:rgba(170,69,53,.13);--radius-lg:4px;--radius-md:3px;--radius-sm:2px;--font-display:'DM Serif Display',Georgia,serif;--font-body:'Manrope',Arial,sans-serif;--font-dot:'JetBrains Mono',monospace;}
body{color:var(--ink);background:#f8edcf;letter-spacing:0;}body::before{z-index:2;background-image:radial-gradient(rgba(87,53,19,.14) .55px,transparent .75px),radial-gradient(rgba(255,255,255,.8) .55px,transparent .7px);background-size:7px 7px,11px 11px;background-position:0 0,4px 5px;opacity:.3;mix-blend-mode:multiply;}.wallpaper{background:linear-gradient(125deg,#fbf1d7 0%,#f5e4bd 48%,#ead6aa 100%);}.wallpaper::before{background-image:linear-gradient(rgba(91,62,35,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(91,62,35,.08) 1px,transparent 1px);background-size:46px 46px;opacity:.6;mask-image:none;}.blob{filter:blur(95px);opacity:.18;mix-blend-mode:multiply;}.blob-1{background:#c59a5f}.blob-2{background:#c78064}.blob-3{background:#9aa472}.noise{opacity:.15;mix-blend-mode:multiply;}
#boot{background:#292016;background-image:radial-gradient(circle at 50% 44%,rgba(244,216,159,.2),transparent 30%);color:#f8edcf;}#boot::after{content:'A R C H I V E  /  PERSONAL COMPUTING';color:rgba(248,237,207,.63);font-family:var(--font-dot);}#boot-log{color:#f7d98e;font-family:var(--font-dot);}#boot-log .dim{color:#998264;}#boot-bar-track{background:rgba(248,237,207,.18);border-radius:0;}#boot-bar{background:#b85c45;border-radius:0;}
#topbar{top:0;width:100%;height:40px;border:0;border-bottom:1px solid rgba(64,42,22,.45);border-radius:0;background:rgba(249,240,214,.84);box-shadow:0 2px 0 rgba(255,255,255,.65) inset,0 2px 8px rgba(65,41,21,.12);padding:0 18px;}#topbar .brand{font:700 11px var(--font-mono);letter-spacing:1.8px;color:#342719;}#topbar .brand .dot{width:6px;height:6px;border-radius:0;background:#aa4535;box-shadow:none;animation:none;}#topbar .right{gap:8px;}#topbar button.icon-btn{color:#5a412d;background:transparent;border-color:transparent;border-radius:0;font:10px var(--font-mono);letter-spacing:.4px;padding:5px 7px;}#topbar button.icon-btn:hover{background:#ebd9ad;color:#2b2118;}#clock{color:#382b1d;font-family:var(--font-mono);font-size:10px;letter-spacing:.5px;}
#desktop{inset:40px 0 78px;}.icon-grid{top:25px;left:23px;gap:13px;}.desk-icon{width:88px;border-radius:0;padding:7px 3px;}.desk-icon:hover,.desk-icon:focus-visible{background:rgba(118,82,42,.1);border-color:rgba(91,61,33,.18);box-shadow:none;}.desk-icon .glyph{width:49px;height:49px;border-radius:2px;background:linear-gradient(135deg,#f8edcf,#dac087);border:1px solid #7a5a35;box-shadow:3px 3px 0 rgba(86,57,28,.22),inset 1px 1px rgba(255,255,255,.9);filter:sepia(.18);}.desk-icon .glyph::after{width:5px;height:5px;top:5px;right:5px;border-radius:0;background:#aa4535;box-shadow:none;}.desk-icon span{font-family:var(--font-mono);font-size:9px;letter-spacing:.35px;color:#3e2f20;text-transform:uppercase;text-shadow:0 1px #fff6dd;}
.window{background:rgba(252,244,218,.93);border:1px solid #674827;border-radius:2px;box-shadow:6px 7px 0 rgba(70,44,23,.24),0 19px 38px -20px rgba(43,28,13,.38),inset 0 0 0 3px rgba(110,75,39,.07);}.window::before{background:linear-gradient(115deg,rgba(255,255,255,.3),transparent 20%);}.window.open{animation:archive-open .34s cubic-bezier(.2,.8,.2,1) both;}@keyframes archive-open{from{opacity:0;transform:translateY(10px) scale(.985);filter:none}to{opacity:1;transform:none}}.win-titlebar{background:#38291c;border-bottom:3px double #cfb57d;padding:10px 13px;}.win-title{color:#f8edcf;font-family:var(--font-mono);font-size:10px;letter-spacing:1px;}.win-title::before{content:'◆';color:#e2bb6d;margin-right:8px;}.traffic{gap:5px;}.traffic button{width:10px;height:10px;border-radius:0;border-color:#c9a775;background:#e9d6a4;}.traffic button::before{border-radius:0;}.traffic:hover .tf-close::before{background:#b6513f}.traffic:hover .tf-min::before{background:#c38b38}.traffic:hover .tf-max::before{background:#788550}.win-body{padding:22px 24px;}.h-eyebrow{color:#aa4535;font-family:var(--font-mono);font-size:9.5px;letter-spacing:1.8px;}.h-title{color:#302116;font-family:var(--font-display);font-size:31px;font-weight:400;letter-spacing:-.6px;}.pill{border-radius:1px;background:#eee0bb;border-color:#b89a69;color:#5a402b;font-family:var(--font-mono);font-size:9.5px;}.avatar{background:linear-gradient(135deg,#d8b472,#c57659);border-radius:2px;color:#362415;box-shadow:4px 4px 0 rgba(84,54,25,.25),inset 1px 1px rgba(255,255,255,.62);font-family:var(--font-display);}.about-bio p,.fact-list li{color:#594733;}.fact-list li::before{color:#aa4535;}.resume-btn,.msg-form button,.gb-form button{border-radius:1px;background:#9d4234;box-shadow:3px 3px 0 #633127;color:#fff8e8;}.proj-card,.link-card,.gb-entry,.wx-day{border-radius:2px;background:rgba(239,223,182,.45);border-color:#b69866;}.proj-card:hover,.link-card:hover,.map-entry:hover,.map-entry.active{border-color:#9d4234;background:#f7e8c7;box-shadow:3px 4px 0 rgba(95,58,28,.18);}.proj-card h3,.link-card .lt,.wx-temp,.wx-loc,.wx-day .wd-range,.map-entry .me-label{color:#322216;font-family:var(--font-display);}.proj-card p,.link-card .ls,.gb-entry p,.wx-status,.wx-day .wd-name,.map-entry .me-city{color:#67513a;}.proj-stack span{border-radius:1px;color:#884232;background:#ead4aa;}.proj-link,.map-entry .me-year{color:#9d4234;}.link-card .lg{border-radius:1px;background:#ead1a0;}.msg-form input,.msg-form textarea,.gb-form input,.gb-form textarea{border-radius:1px;background:#fff5da;border-color:#b79764;color:#332315;}.copy-email-btn{border-radius:1px;color:#62452f;background:#f1dfb9;border-color:#b99b68;}.copy-email-btn:hover{color:#8e392f;border-color:#8e392f;}
.term-body{background:#201b15;}.term-body::after{opacity:.12;}#term-log{color:#ead48d;}.term-input-row{color:#ead48d;}.term-input-row .prompt{color:#e08a61;}#term-input{color:#ead48d;caret-color:#ead48d;}.wx-hero{border-radius:2px;background:linear-gradient(135deg,#dcc28b,#e6bfa3)!important;border-color:#9f7b4e;}.wx-meta{color:#5e462f;}.wx-actions button{border-radius:1px;color:#4c3724;background:#f2dfb8;border-color:#b99b68;}.wx-actions button:hover{border-color:#9d4234;color:#9d4234;}.map-canvas-wrap{border-radius:2px;border-color:#9f7a4c;filter:sepia(.26) saturate(.74);}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#3b2b1d;}.map-pin{background:#aa4535;border-radius:50% 50% 50% 0;}.proj-tab{border-radius:1px;background:#f1dfb8;border-color:#b99b68;color:#60462f;}.proj-tab.active{background:#9d4234;border-color:#783027;color:#fff5d9;}
#dock-wrap{bottom:12px;}#dock{gap:4px;padding:7px 9px;background:#35271b;border:1px solid #24190f;border-radius:2px;box-shadow:4px 5px 0 rgba(66,42,20,.28),inset 0 1px rgba(255,255,255,.13);}.dock-btn{width:46px;height:46px;border-radius:1px;color:#39281a;background:linear-gradient(135deg,#f2dfa7,#caa96d);border-color:#9a7444;box-shadow:inset 1px 1px rgba(255,255,255,.6);}.dock-btn:hover{background:linear-gradient(135deg,#f9ebbd,#d9b977);border-color:#f7e0a0;}.dock-btn.active::after{border-radius:0;background:#d77a55;box-shadow:none;}.dock-btn .tip{border-radius:1px;background:#342519;color:#f8edcf;border-color:#896342;font-family:var(--font-mono);}.resize-handle::before{border-color:#8b6743;}
#toast{border-radius:1px;background:#3b2b1e;color:#faebc6;border-color:#705034;box-shadow:4px 5px 0 rgba(74,45,23,.22);font-family:var(--font-mono);}
.hud{right:28px;top:24px;width:250px;}.hud-card{border-radius:2px;border-color:#a37d4e;background:rgba(251,241,211,.7);box-shadow:3px 4px 0 rgba(87,55,24,.16),inset 1px 1px rgba(255,255,255,.7);}.hud-kicker{font-family:var(--font-mono);color:#9d4234;}.hud-value{font-family:var(--font-display);font-weight:400;color:#342518;letter-spacing:0;}.hud-meta{font-family:var(--font-mono);color:#806449;}.signal i{border-radius:0;background:#8a975c;box-shadow:none;}.hud-orb{border-color:#b18c5c;box-shadow:inset 0 0 24px rgba(174,118,58,.2);}.hud-orb::before{border-color:#aa4535}.hud-orb::after{background:#aa4535;box-shadow:0 0 10px rgba(170,69,53,.55);}
.top-action{border-radius:1px;border-color:#b49765;background:transparent;color:#5a412d;}.top-action:hover{background:#ead6a4;color:#2b2118;}.search-layer{background:rgba(64,43,22,.28);backdrop-filter:blur(4px);}.command-box{border-radius:2px;border-color:#6c4d2c;background:#f8edcf;box-shadow:7px 9px 0 rgba(60,37,18,.3);}.command-input{border-bottom-color:#b89968;}.command-input span{color:#9d4234;}.command-input input{color:#362518;font-family:var(--font-display);}.command-input kbd{border-radius:1px;color:#765b42;border-color:#b89c6d;}.command-results{background:#f5e4bd;}.command-result{border-radius:1px;color:#39291c;}.command-result:hover,.command-result.focused{background:#ead1a0;}.command-result b{font-family:var(--font-display);}.command-result small{font-family:var(--font-mono);color:#80654d;}.command-icon{border-radius:1px;background:#e5cfa0;color:#9d4234;}.notify-panel{border-radius:2px;border-color:#8e6c45;background:rgba(250,240,211,.96);box-shadow:5px 7px 0 rgba(58,37,18,.23);}.notify-head{font-family:var(--font-mono);color:#38291c;}.notify-head button{color:#9d4234;font-family:var(--font-mono);}.notice{border-radius:1px;background:#f2dfb8;border-color:#c3a575;}.notice-mark{color:#9d4234;}.notice b{color:#372619;font-family:var(--font-display);}.notice p{color:#6b513a;}.context-menu{border-radius:2px;border-color:#785633;background:#f8edcf;box-shadow:4px 6px 0 rgba(60,37,18,.28);}.context-menu button{border-radius:1px;color:#3b2a1b;}.context-menu button:hover{background:#e7cfa0;}.context-menu hr{border-color:#c3a575;}
@media(max-width:720px){#topbar{height:38px;}.window{border-radius:2px!important;}.hud{display:none;}#dock{border-radius:2px;}.dock-btn{width:40px;height:40px;}.h-title{font-size:27px;}}

/* HOME DESKTOP TOOLS */
.battery-readout{display:flex;align-items:center;gap:6px;color:#5a412d;font:10px var(--font-mono);white-space:nowrap;}.battery-readout b{font-weight:500;}.battery-icon{position:relative;width:18px;height:9px;border:1px solid #6e5135;display:block;padding:1px;}.battery-icon::after{content:'';position:absolute;right:-3px;top:2px;width:2px;height:3px;background:#6e5135;}.battery-icon i{display:block;width:86%;height:100%;background:#84905b;transition:width .5s,background .3s;}
.home-search{position:absolute;z-index:5;top:24px;left:50%;transform:translateX(-50%);width:min(390px,calc(100vw - 350px));height:37px;display:flex;align-items:center;gap:9px;padding:0 11px;border:1px solid #a98b5c;background:rgba(252,244,218,.7);box-shadow:3px 3px 0 rgba(87,55,24,.13),inset 1px 1px rgba(255,255,255,.8);color:#70553c;font:10px var(--font-mono);letter-spacing:.3px;text-align:left;transition:.18s;}.home-search span:first-child{font-size:18px;color:#9d4234;line-height:0;}.home-search kbd{margin-left:auto;padding:3px 5px;border:1px solid #b99d6c;background:#eee0bb;color:#796046;font:8px var(--font-mono);}.home-search:hover{background:#fff6db;transform:translateX(-50%) translateY(-1px);box-shadow:4px 4px 0 rgba(87,55,24,.2);}
.home-player{position:absolute;z-index:4;right:28px;bottom:20px;width:250px;padding:14px;border:1px solid #9e794a;background:rgba(250,239,207,.86);box-shadow:4px 5px 0 rgba(78,49,21,.18),inset 1px 1px rgba(255,255,255,.75);}.player-stamp,.wallpaper-label{font:8px var(--font-mono);letter-spacing:1.4px;color:#9d4234;}.player-label{margin-top:5px;font:20px var(--font-display);color:#322216;letter-spacing:-.2px;}.player-track{display:flex;align-items:center;gap:10px;margin-top:11px;padding:9px 0;border-top:1px solid #cfb184;border-bottom:1px solid #cfb184;}.record-disc{width:33px;height:33px;border-radius:50%;display:grid;place-items:center;background:repeating-radial-gradient(circle,#39291b 0 2px,#261c14 3px 5px);border:2px solid #c99a5e;color:#e8ca90;font:9px var(--font-mono);}.record-disc.spinning{animation:record-spin 2.5s linear infinite;}@keyframes record-spin{to{transform:rotate(360deg)}}.player-track b{display:block;font:12px var(--font-display);font-weight:400;color:#382619;}.player-track span{display:block;margin-top:2px;color:#80644a;font:9px var(--font-mono);}.player-progress{height:4px;margin-top:11px;background:#e3cca0;overflow:hidden;}.player-progress i{display:block;width:8%;height:100%;background:#aa4535;transition:width .4s linear;}.player-controls{display:flex;align-items:center;gap:9px;margin-top:10px;}.player-controls button{width:25px;height:22px;border:1px solid #987044;background:#f5e4b9;color:#5b3a25;font:13px var(--font-mono);line-height:1;}.player-controls button:hover{background:#e8cb92;}.player-controls span{margin-left:auto;color:#7f6448;font:9px var(--font-mono);}
.wallpaper-switcher{position:absolute;right:294px;bottom:20px;z-index:4;padding:10px 12px;border:1px solid #a68051;background:rgba(250,239,207,.74);box-shadow:3px 4px 0 rgba(78,49,21,.14);}.wallpaper-switcher>div:last-child{display:flex;gap:6px;margin-top:8px;}.wallpaper-swatch{width:17px;height:17px;border:1px solid rgba(61,42,23,.6);border-radius:50%;background:#f8edcf;box-shadow:inset 0 0 0 3px #f8edcf;}.wallpaper-swatch[data-paper="indigo"]{background:#65709a;box-shadow:inset 0 0 0 3px #65709a;}.wallpaper-swatch[data-paper="moss"]{background:#899070;box-shadow:inset 0 0 0 3px #899070;}.wallpaper-swatch.active{outline:1px solid #9d4234;outline-offset:2px;}
.player-controls button{min-width:25px;width:auto;padding:0 6px;}.player-stations{display:flex;gap:5px;margin-top:11px;padding-top:10px;border-top:1px dotted #b69362;}.station-btn{flex:1;padding:5px 0;border:1px solid #b99665;background:#f4e2b8;color:#6a4d35;font:8px var(--font-mono);}.station-btn:hover,.station-btn.active{background:#9d4234;border-color:#7d3127;color:#fff3d6;}
body.paper-indigo{--bg-1:#d4d5ca;--bg-2:#a9afbd;--ink:#252b3c;--ink-soft:#4d556a;--ink-dim:#788096;--red:#904b48;--glass-strong:rgba(238,235,214,.88);}.paper-indigo .wallpaper{background:linear-gradient(125deg,#d5d5c6,#aab3c2 55%,#8d97af);}.paper-indigo .wallpaper::before{background-image:linear-gradient(rgba(33,42,65,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(33,42,65,.12) 1px,transparent 1px);}.paper-indigo .blob{opacity:.16;}.paper-indigo .home-player,.paper-indigo .wallpaper-switcher,.paper-indigo .hud-card,.paper-indigo .home-search{background:rgba(239,235,211,.79);}.paper-indigo .blob-1{background:#5e79a7}.paper-indigo .blob-2{background:#b37a75}.paper-indigo .blob-3{background:#7e927a}
body.paper-moss{--bg-1:#e9e1bd;--bg-2:#c5c69d;--ink:#2c3220;--ink-soft:#505b3a;--ink-dim:#778060;--red:#9a4e36;--glass-strong:rgba(245,239,204,.88);}.paper-moss .wallpaper{background:linear-gradient(125deg,#ece1ba,#c7c89e 55%,#a8ac80);}.paper-moss .wallpaper::before{background-image:linear-gradient(rgba(55,69,35,.13) 1px,transparent 1px),linear-gradient(90deg,rgba(55,69,35,.13) 1px,transparent 1px);}.paper-moss .home-player,.paper-moss .wallpaper-switcher,.paper-moss .hud-card,.paper-moss .home-search{background:rgba(246,239,201,.78);}.paper-moss .blob-1{background:#a8ae6a}.paper-moss .blob-2{background:#b98562}.paper-moss .blob-3{background:#8a9b62}
@media(max-width:720px){.home-search{top:12px;width:calc(100vw - 165px);left:auto;right:9px;transform:none;}.home-search:hover{transform:translateY(-1px)}.home-search kbd{display:none;}.home-player{display:none;}.wallpaper-switcher{right:9px;bottom:5px;padding:7px 9px;}.wallpaper-label{display:none;}.wallpaper-switcher>div:last-child{margin:0;}.wallpaper-swatch{width:14px;height:14px;}}

/* DESKTOP COMFORT — familiar affordances, kept in the archive language */
.window{transition:box-shadow .18s ease,filter .18s ease,opacity .22s ease,transform .22s ease;}.window.focused{box-shadow:7px 8px 0 rgba(70,44,23,.3),0 24px 44px -20px rgba(43,28,13,.48),inset 0 0 0 3px rgba(170,69,53,.11);}.window:not(.focused).open{filter:saturate(.82) brightness(.98);}.win-titlebar{touch-action:none;}.traffic button{transition:transform .14s ease,background .14s ease;}.traffic button:hover{transform:scale(1.18);}.dock-btn,.desk-icon,.top-action,.home-search,.wallpaper-swatch,.station-btn,.player-controls button{touch-action:manipulation;}.dock-btn:active,.desk-icon:active,.top-action:active,.home-search:active,.station-btn:active,.player-controls button:active{transform:translate(1px,1px)!important;box-shadow:none;}.window.snapped{border-color:#9d4234;}.window.maximized{border-color:#7d5938;}.window.minimized{transform:scale(.88) translateY(36px);}
#snap-guide{position:fixed;z-index:3;top:52px;bottom:90px;left:16px;width:0;pointer-events:none;border:2px dashed transparent;background:rgba(170,69,53,.08);opacity:0;transition:opacity .12s,width .16s,transform .16s;}.snap-left #snap-guide,.snap-right #snap-guide,.snap-max #snap-guide{opacity:1;border-color:rgba(157,66,52,.65);}.snap-left #snap-guide{width:calc(50vw - 24px);}.snap-right #snap-guide{left:calc(50vw + 8px);width:calc(50vw - 24px);}.snap-max #snap-guide{left:16px;width:calc(100vw - 32px);}.snap-left #snap-guide::after,.snap-right #snap-guide::after,.snap-max #snap-guide::after{content:'Release to snap';position:absolute;top:12px;left:12px;color:#8a382e;font:9px var(--font-mono);letter-spacing:1px;text-transform:uppercase;}.snap-max #snap-guide::after{content:'Release to maximize';}
@media(max-width:720px){.window.focused{box-shadow:4px 5px 0 rgba(70,44,23,.25),0 15px 28px -18px rgba(43,28,13,.35);}.traffic button{width:15px;height:15px;}.win-titlebar{padding:12px 13px;}.resize-handle{width:24px;height:24px;}.snap-left #snap-guide,.snap-right #snap-guide{width:0;opacity:0;}.snap-max #snap-guide{top:47px;bottom:74px;}}

