/* ============================================================
   SOLANA OS - one folder, sixty seven subfolders
   0 base . 1 boot . 2 desktop . 3 icons . 4 windows
   5 explorer . 6 widgets . 7 taskbar/start . 8 responsive
   ============================================================ */

/* ---------- 0. base ---------- */
:root{
  --face:#ece9d8;
  --face-dark:#d4d0c8;
  --edge:#aca899;
  --title1:#3f8cf3;
  --title2:#1e5cd6;
  --title-edge:#0f47b0;
  --title-inactive1:#9db9eb;
  --title-inactive2:#7f9fd8;
  --sel:#316ac5;
  --taskbar1:#3a77e0;
  --taskbar2:#1c47ad;
  --paper:#ffffff;
  --ink:#1c1c1c;
  --muted:#6f6d66;
  --sol-purple:#9945FF;
  --sol-green:#14F195;
}
*{box-sizing:border-box;}
html,body{height:100%;margin:0;}
body{
  font-family:Tahoma,"Segoe UI",Verdana,sans-serif;
  font-size:13px;
  background:#000;
  color:var(--ink);
  overflow:hidden;
  user-select:none;
}
.hidden{display:none !important;}
.screen{position:fixed;inset:0;}
button{font-family:inherit;}

/* themed scrollbars (everywhere) */
*{scrollbar-width:thin;scrollbar-color:#c6c1ae #f3f1e6;}
*::-webkit-scrollbar{width:13px;height:13px;}
*::-webkit-scrollbar-track{background:#f3f1e6;}
*::-webkit-scrollbar-thumb{
  background:linear-gradient(90deg,#dcd8c8,#c6c1ae);
  border:1px solid #a49f8c;border-radius:2px;
}
*::-webkit-scrollbar-thumb:hover{background:#b5b09b;}
*::-webkit-scrollbar-corner{background:#f3f1e6;}
::selection{background:var(--sel);color:#fff;}

/* ---------- 1. boot ---------- */
#boot{background:#000;display:flex;align-items:center;justify-content:center;cursor:pointer;}
.boot-inner{text-align:center;}
.boot-logo svg{width:96px;height:auto;display:block;margin:0 auto 18px;}
.boot-name{
  color:#e8e8e8;font-size:34px;font-weight:400;letter-spacing:1px;margin-bottom:46px;
}
.boot-name span{font-weight:700;background:linear-gradient(100deg,var(--sol-purple),var(--sol-green));
  -webkit-background-clip:text;background-clip:text;color:transparent;}
.boot-track{
  width:210px;height:16px;margin:0 auto;border:1px solid #7d7d7d;border-radius:8px;
  padding:2px;overflow:hidden;
}
.boot-run{position:relative;height:100%;width:100%;overflow:hidden;}
.boot-run i{
  position:absolute;top:1px;width:10px;height:8px;border-radius:2px;
  background:linear-gradient(180deg,#9b6bff,#5f2ec4);
  animation:bootslide 1.6s linear infinite;
}
.boot-run i:nth-child(2){animation-delay:.14s;}
.boot-run i:nth-child(3){animation-delay:.28s;}
@keyframes bootslide{from{left:-18px;}to{left:calc(100% + 8px);}}
.boot-foot{position:absolute;bottom:26px;left:0;right:0;text-align:center;color:#555;font-size:12px;}

/* ---------- shutdown ---------- */
#shutdown{background:#000;display:flex;align-items:center;justify-content:center;cursor:pointer;}
.shut-msg{color:#d8d0a8;font-size:clamp(18px,3.4vw,30px);text-align:center;line-height:1.5;}
.shut-msg span{display:block;font-size:.55em;color:#6f6a55;margin-top:10px;}

/* ---------- 2. desktop ---------- */
#desktop{background:#3a6ea5;overflow:hidden;}
.wallpaper{
  position:absolute;inset:0;
  background:#3a6ea5 url("../assets/bliss.jpg") center/cover no-repeat;
}
.wallpaper::after{
  content:"";position:absolute;right:18px;bottom:52px;width:120px;height:94px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 398 312'%3E%3Cpath fill='white' d='M64.6 237.9c2.4-2.4 5.7-3.8 9.2-3.8h317.4c5.8 0 8.7 7 4.6 11.1l-62.7 62.7c-2.4 2.4-5.7 3.8-9.2 3.8H6.5c-5.8 0-8.7-7-4.6-11.1l62.7-62.7z'/%3E%3Cpath fill='white' d='M64.6 3.8C67 1.4 70.3 0 73.8 0h317.4c5.8 0 8.7 7 4.6 11.1l-62.7 62.7c-2.4 2.4-5.7 3.8-9.2 3.8H6.5c-5.8 0-8.7-7-4.6-11.1L64.6 3.8z'/%3E%3Cpath fill='white' d='M333.1 120.1c-2.4-2.4-5.7-3.8-9.2-3.8H6.5c-5.8 0-8.7 7-4.6 11.1l62.7 62.7c2.4 2.4 5.7 3.8 9.2 3.8h317.4c5.8 0 8.7-7 4.6-11.1l-62.7-62.7z'/%3E%3C/svg%3E") center/contain no-repeat;
  opacity:.08;pointer-events:none;
}

/* ---------- 3. desktop icons ---------- */
.icons{
  position:absolute;top:14px;left:12px;z-index:5;
  display:flex;flex-direction:column;gap:10px;align-content:flex-start;
  flex-wrap:wrap;max-height:calc(100% - 90px);
}
.icon{width:86px;padding:6px 2px;text-align:center;border:1px solid transparent;border-radius:3px;cursor:default;}
.icon .glyph{width:42px;height:42px;margin:0 auto;display:block;filter:drop-shadow(1px 2px 2px rgba(0,0,0,.45));}
.icon .glyph svg{width:100%;height:100%;display:block;}
.icon .label{
  display:block;margin-top:5px;font-size:12px;color:#fff;
  text-shadow:1px 1px 2px #000,0 0 4px rgba(0,0,0,.7);word-break:break-word;line-height:1.2;
}
.icon.selected{background:rgba(49,106,197,.45);border-color:rgba(255,255,255,.5);}
.icon.selected .label{background:var(--sel);}

/* ---------- 4. windows ---------- */
.win{
  position:absolute;min-width:220px;max-width:calc(100vw - 8px);
  display:flex;flex-direction:column;
  background:var(--face);
  border:1px solid var(--title-edge);
  border-radius:8px 8px 3px 3px;
  box-shadow:2px 4px 14px rgba(0,0,0,.4);
  padding:0 3px 3px;
}
.win.max{left:0 !important;top:0 !important;width:100% !important;height:calc(100% - 34px) !important;border-radius:0;}
.win-tb{
  display:flex;align-items:center;gap:6px;height:28px;padding:0 4px 0 6px;margin:0 -3px 2px;
  border-radius:7px 7px 0 0;cursor:grab;
  background:linear-gradient(180deg,var(--title1) 0%,var(--title2) 46%,#1a51c4 92%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35);
}
.win:not(.active) .win-tb{background:linear-gradient(180deg,var(--title-inactive1),var(--title-inactive2));}
.win-tb .tb-ico{width:16px;height:16px;flex:0 0 auto;display:flex;}
.win-tb .tb-ico svg{width:16px;height:16px;}
.win-tb .tb-name{
  flex:1;color:#fff;font-weight:700;font-size:13px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  text-shadow:1px 1px 1px rgba(0,0,0,.4);
}
.tb-btns{display:flex;gap:2px;}
.tbb{
  width:21px;height:21px;border-radius:3px;border:1px solid rgba(255,255,255,.6);
  color:#fff;font-size:11px;line-height:1;cursor:pointer;padding:0;font-weight:700;
  background:linear-gradient(180deg,#4a8af0,#2358c8);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4);
}
.tbb:hover{filter:brightness(1.15);}
.tbb:active{filter:brightness(.9);}
.tbb.x{background:linear-gradient(180deg,#ee9080,#d24a2e);}
.win-body{
  flex:1;min-height:0;overflow:auto;background:var(--paper);
  border:1px solid var(--edge);font-size:13px;line-height:1.5;
}
.win-body.pad{padding:12px;}
.win-status{
  display:flex;gap:2px;margin-top:3px;font-size:11.5px;color:#333;
}
.win-status span{
  background:var(--face);border:1px solid;border-color:#9a9687 #fff #fff #9a9687;
  padding:2px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.win-status .ws-left{flex:1;}
.win-status .ws-right{flex:0 0 auto;max-width:50%;}

/* notepad */
.win-body.notepad{
  font-family:Consolas,"Courier New",monospace;font-size:13px;white-space:pre-wrap;
  padding:6px 8px;user-select:text;cursor:text;
}

/* console */
.win-body.console{
  background:#0d0d0d;color:#cccccc;border-color:#333;
  font-family:Consolas,"Courier New",monospace;font-size:12.5px;
  padding:8px 10px;white-space:pre-wrap;user-select:text;
  scrollbar-color:#3a3a3a #101010;
}
.win-body.console::-webkit-scrollbar-track{background:#101010;}
.win-body.console::-webkit-scrollbar-thumb{background:#3a3a3a;border-color:#222;}
.console .c-dim{color:#787878;}
.console .c-bad{color:#e07a6a;}
.console .c-ok{color:#7ec78f;}

/* generic centered widget column */
.win-body.center-col{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:14px;text-align:center;}
.w-cap{font-size:11.5px;color:var(--muted);max-width:300px;line-height:1.45;}

/* ---------- 5. explorer ---------- */
.ex-menu{display:flex;gap:2px;padding:1px 4px;background:var(--face);font-size:12.5px;color:#222;}
.ex-menu span{padding:2px 7px;border-radius:2px;}
.ex-menu span:hover{background:var(--sel);color:#fff;}
.ex-toolbar{
  display:flex;align-items:center;gap:4px;padding:3px 6px;background:var(--face);
  border-top:1px solid #fff;border-bottom:1px solid var(--edge);
}
.ex-btn{
  display:flex;align-items:center;gap:5px;height:24px;padding:0 8px;
  background:transparent;border:1px solid transparent;border-radius:3px;
  font-size:12px;color:#222;cursor:pointer;
}
.ex-btn:hover:not(:disabled){border-color:#b8b4a2;background:#f6f4ea;}
.ex-btn:active:not(:disabled){background:#e6e2d2;}
.ex-btn:disabled{color:#a5a294;cursor:default;}
.ex-btn b{font-size:14px;font-weight:400;font-family:Consolas,monospace;line-height:1;}
.ex-address{
  display:flex;align-items:center;gap:6px;padding:3px 6px;background:var(--face);
  border-bottom:1px solid var(--edge);font-size:12px;color:#444;
}
.ex-addr-field{
  flex:1;display:flex;align-items:center;gap:6px;background:#fff;
  border:1px solid #7f9db9;padding:2px 6px;height:22px;
  font-size:12px;color:#111;white-space:nowrap;overflow:hidden;
}
.ex-addr-field svg{width:14px;height:14px;flex:0 0 auto;}
.ex-split{flex:1;display:flex;min-height:0;background:#fff;}
.ex-tree{
  width:305px;flex:0 0 auto;overflow:auto;border-right:1px solid var(--edge);
  padding:6px 4px 12px 6px;background:#fff;
  font-family:Consolas,"Courier New",monospace;font-size:12.5px;line-height:1.15;
}
.trow{display:flex;align-items:center;white-space:nowrap;padding:1px 4px 1px 2px;cursor:default;border-radius:2px;}
.trow:hover{background:#eaf0fa;}
.trow.sel{background:var(--sel);color:#fff;}
.trow .guides{color:#9aa0a8;white-space:pre;}
.trow.sel .guides{color:#cfd9ee;}
.trow .t-toggle{
  width:13px;height:13px;flex:0 0 auto;margin-right:3px;
  border:1px solid #9aa0a8;background:#fff;color:#333;
  font-size:10px;line-height:11px;text-align:center;cursor:pointer;
}
.trow.sel .t-toggle{color:#333;}
.trow .t-spacer{width:16px;flex:0 0 auto;}
.trow .t-ico{width:15px;height:15px;flex:0 0 auto;margin-right:5px;display:flex;}
.trow .t-ico svg{width:15px;height:15px;}
.trow .t-name{overflow:hidden;text-overflow:ellipsis;}
.ex-main{
  flex:1;overflow:auto;padding:12px;background:#fff;
  display:flex;flex-wrap:wrap;align-content:flex-start;gap:2px;
}
.fitem{
  width:96px;padding:8px 4px 6px;text-align:center;border:1px solid transparent;border-radius:3px;cursor:default;
}
.fitem .f-ico{width:36px;height:36px;margin:0 auto;display:block;}
.fitem .f-ico svg{width:100%;height:100%;display:block;}
.fitem .f-name{display:block;margin-top:5px;font-size:11.5px;line-height:1.25;word-break:break-word;color:#111;}
.fitem:hover{background:#f0f4fb;border-color:#cdd8ec;}
.fitem.selected{background:#d6e4f7;border-color:#9ebde4;}
.ex-empty{color:var(--muted);font-size:12px;padding:8px;}

/* ---------- 6. widgets ---------- */
.apy-num{font-family:Consolas,monospace;font-size:40px;font-weight:700;color:#1c7c39;}
.peg-num{font-family:Consolas,monospace;font-size:44px;font-weight:700;color:#1c7c39;}
.peg-num.bad{color:#c0392b;}
.peg-log{font-family:Consolas,monospace;font-size:11px;color:var(--muted);min-height:34px;white-space:pre-line;}

.chart-wrap{display:flex;flex-direction:column;height:100%;}
.chart-wrap canvas{flex:1;width:100%;display:block;}

.rpc-bar{display:flex;gap:8px;padding:8px;background:var(--face);border-bottom:1px solid var(--edge);}
.xp-btn{
  padding:4px 16px;font-size:12px;cursor:pointer;border-radius:3px;
  background:linear-gradient(180deg,#fff,#ece9d8 45%,#dcd8c8);
  border:1px solid #003c74;color:#111;
}
.xp-btn:hover{box-shadow:inset 0 0 0 2px rgba(255,196,88,.55);}
.xp-btn:active{background:#dcd8c8;}
.rpc-body{flex:1;min-height:0;}

.snake-wrap{display:flex;align-items:center;justify-content:center;background:#0d0d0d;height:100%;}
.snake-wrap canvas{image-rendering:pixelated;background:#101510;border:1px solid #2a2a2a;}

.feed{display:flex;flex-direction:column;user-select:text;}
.feed-post{display:flex;gap:9px;padding:10px 12px;border-bottom:1px solid #e8ebf0;}
.feed-av{
  width:34px;height:34px;border-radius:50%;flex:0 0 auto;
  background:#b9c6dd;color:#fff;font-weight:700;font-size:15px;
  display:flex;align-items:center;justify-content:center;
}
.feed-b{flex:1;min-width:0;}
.feed-head{font-size:12px;color:#5b6470;}
.feed-head b{color:#15181d;margin-right:5px;}
.feed-text{font-size:13px;color:#15181d;margin-top:2px;line-height:1.4;}

.credits-view{position:relative;overflow:hidden;background:#0d0d0d;height:100%;}
.credits-roll{
  position:absolute;left:0;right:0;top:0;text-align:center;
  font-family:Consolas,monospace;font-size:12.5px;color:#c9c9c9;line-height:2;
}
.credits-roll .cr-h{color:#8f8f8f;font-size:11px;letter-spacing:2px;}
.credits-roll .cr-you{color:#fff;font-weight:700;}

.bingo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;padding:10px;}
.bingo-cell{
  aspect-ratio:1.15;display:flex;align-items:center;justify-content:center;text-align:center;
  padding:5px;font-size:10.8px;line-height:1.25;cursor:pointer;border-radius:3px;
  background:#f7f5ec;border:1px solid #c9c4b0;color:#222;position:relative;
}
.bingo-cell:hover{background:#efece0;}
.bingo-cell.on{background:#dcd2f5;border-color:#9a7fe0;}
.bingo-cell.on::after{
  content:"";position:absolute;inset:4px;border-radius:50%;
  border:2px solid rgba(90,45,180,.55);pointer-events:none;
}

.grass-wrap{display:flex;height:100%;}
.grass-wrap canvas{width:100%;height:100%;display:block;}

.filelist{list-style:none;margin:0;padding:4px 0;user-select:text;}
.filelist li{display:flex;align-items:center;gap:8px;padding:5px 10px;cursor:default;}
.filelist li:hover{background:var(--sel);color:#fff;}
.filelist li svg{width:16px;height:16px;flex:0 0 auto;}
.filelist .fl-meta{margin-left:auto;font-size:11px;color:var(--muted);}
.filelist li:hover .fl-meta{color:#dfe8f7;}

.about-body{display:flex;flex-direction:column;align-items:center;gap:8px;padding:22px 16px;text-align:center;}
.about-body svg{width:64px;height:auto;}
.about-name{font-size:20px;font-weight:700;letter-spacing:.5px;}
.about-line{font-size:12.5px;color:#333;}
.about-line.dim{color:var(--muted);font-size:11.5px;}
.about-body a{color:#1e5cd6;}

/* ---------- 7. taskbar / start ---------- */
.taskbar{
  position:absolute;left:0;right:0;bottom:0;height:34px;z-index:900;
  display:flex;align-items:stretch;gap:6px;
  background:linear-gradient(180deg,#4b86e8 0%,var(--taskbar1) 8%,#2a5fd0 45%,var(--taskbar2) 100%);
  border-top:1px solid #6d9cf0;
}
#start-btn{
  display:flex;align-items:center;gap:7px;padding:0 18px 0 12px;margin:0;
  border:none;cursor:pointer;color:#fff;font-size:16px;font-weight:700;font-style:italic;
  text-shadow:1px 1px 2px rgba(0,0,0,.5);
  background:linear-gradient(180deg,#55b04e 0%,#3c9938 40%,#2a7d28 100%);
  border-radius:0 12px 12px 0;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4),2px 0 4px rgba(0,0,0,.25);
}
#start-btn:hover{filter:brightness(1.08);}
#start-btn.on{filter:brightness(.88);}
.sb-mark{width:19px;height:19px;display:flex;}
.sb-mark svg{width:100%;height:100%;filter:drop-shadow(1px 1px 1px rgba(0,0,0,.4));}
.task-tabs{flex:1;display:flex;align-items:center;gap:4px;overflow:hidden;padding:4px 0;}
.ttab{
  display:flex;align-items:center;gap:6px;height:26px;max-width:180px;min-width:0;
  padding:0 10px;border-radius:3px;cursor:pointer;border:none;
  background:linear-gradient(180deg,#4d84e4,#2f62c9);color:#fff;font-size:12px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.ttab .tt-ico{width:15px;height:15px;flex:0 0 auto;display:flex;}
.ttab .tt-ico svg{width:15px;height:15px;}
.ttab span{overflow:hidden;text-overflow:ellipsis;}
.ttab.active{background:#1c3f96;box-shadow:inset 1px 1px 3px rgba(0,0,0,.5);}
.tray{
  display:flex;align-items:center;gap:9px;padding:0 12px 0 14px;
  background:linear-gradient(180deg,#2ea0e8 0%,#1479cf 50%,#0f5cb0 100%);
  border-left:1px solid #6d9cf0;color:#fff;font-size:12px;
}
.tray-mark{width:15px;height:15px;display:flex;}
.tray-mark svg{width:100%;height:100%;}
#tray-slot{font-family:Consolas,monospace;font-size:11.5px;opacity:.92;}
#clock{font-weight:700;}

#start-menu{
  position:absolute;left:2px;bottom:38px;width:280px;z-index:950;
  background:var(--face);border:1px solid var(--title-edge);border-radius:6px 6px 0 0;
  box-shadow:3px 5px 14px rgba(0,0,0,.45);overflow:hidden;
}
.sm-head{
  display:flex;align-items:center;gap:10px;padding:12px 12px;
  background:linear-gradient(180deg,var(--title1),var(--title2));
  color:#fff;
}
.sm-head .sm-mark{width:34px;height:34px;background:#fff;border-radius:5px;padding:5px;display:flex;box-shadow:0 1px 3px rgba(0,0,0,.4);}
.sm-head .sm-mark svg{width:100%;height:100%;}
.sm-title{font-weight:700;font-size:15px;text-shadow:1px 1px 1px rgba(0,0,0,.35);}
.sm-sub{font-size:11px;opacity:.85;}
.sm-list{padding:5px;background:#fff;}
.sm-item{display:flex;align-items:center;gap:10px;padding:8px 10px;font-size:12.5px;cursor:pointer;border-radius:3px;color:#111;}
.sm-item:hover{background:var(--sel);color:#fff;}
.sm-item .smi{width:22px;height:22px;flex:0 0 auto;display:flex;}
.sm-item .smi svg{width:22px;height:22px;}
.sm-sep{height:1px;background:var(--edge);margin:4px 8px;}

/* ---------- 8. responsive ---------- */
@media (max-width:700px){
  .icons{flex-direction:row;max-height:none;width:calc(100% - 20px);}
  .ex-tree{width:200px;}
  #start-menu{width:240px;}
  .fitem{width:82px;}
}
