/* ================= Lumina OS — Aurora Glass ================= */
:root{
  --bg-0:#0a0b16; --bg-1:#10122a; --bg-2:#171a3a;
  --glass:rgba(22,24,48,.62);
  --glass-hi:rgba(255,255,255,.07);
  --stroke:rgba(255,255,255,.12);
  --stroke-soft:rgba(255,255,255,.06);
  --ink:#eef0ff; --ink-soft:#aab0d8; --ink-faint:#6c7299;
  --amber:#ffcf86; --rose:#ff90b3; --blue:#82a6ff; --mint:#7be0c0;
  --accent:#ffcf86;
  --r-win:16px; --r-sm:9px;
  --shadow-win:0 30px 80px -20px rgba(0,0,0,.7), 0 2px 0 rgba(255,255,255,.05) inset;
  --ease:cubic-bezier(.22,1,.36,1);
  font-synthesis:none;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:"Lexend",system-ui,sans-serif;
  background:var(--bg-0); color:var(--ink);
  overflow:hidden; -webkit-font-smoothing:antialiased;
  user-select:none;
}
.hidden{display:none !important}
kbd{font-family:"DM Mono",monospace;font-size:.75em;background:var(--glass-hi);border:1px solid var(--stroke);border-radius:5px;padding:1px 6px}

/* ---------- BOOT ---------- */
.boot{position:fixed;inset:0;z-index:200;display:grid;place-items:center;
  background:radial-gradient(120% 90% at 50% 0%,#1a1d44 0%,#0a0b16 70%);}
.boot-inner{display:flex;flex-direction:column;align-items:center;gap:18px;animation:rise .8s var(--ease)}
.boot-mark{filter:drop-shadow(0 0 24px rgba(255,160,120,.35));animation:spin 9s linear infinite}
.boot-name{font-family:"Sora";font-weight:600;font-size:30px;letter-spacing:-.5px}
.boot-name span{background:linear-gradient(90deg,var(--amber),var(--rose),var(--blue));-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700}
.boot-bar{width:190px;height:3px;border-radius:3px;background:rgba(255,255,255,.08);overflow:hidden}
.boot-bar i{display:block;height:100%;width:0;border-radius:3px;background:linear-gradient(90deg,var(--amber),var(--rose));animation:load 1.8s var(--ease) forwards}
.boot-status{font-family:"DM Mono",monospace;font-size:12px;color:var(--ink-faint);letter-spacing:.3px}
@keyframes load{to{width:100%}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* ---------- LOCK ---------- */
.lock{position:fixed;inset:0;z-index:150;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;
  background:linear-gradient(160deg,#161a40,#0a0b16);cursor:pointer;animation:fade .6s var(--ease)}
.lock-clock{text-align:center}
.lock-time{font-family:"Sora";font-weight:300;font-size:clamp(70px,16vw,150px);letter-spacing:-4px;line-height:.9;
  background:linear-gradient(180deg,#fff,#b9bff0);-webkit-background-clip:text;background-clip:text;color:transparent}
.lock-date{font-family:"Lexend";color:var(--ink-soft);font-size:16px;margin-top:8px;letter-spacing:.5px}
.lock-enter{display:flex;align-items:center;gap:12px;padding:13px 26px;border-radius:40px;cursor:pointer;
  font-family:"Sora";font-weight:500;font-size:15px;color:var(--ink);
  background:var(--glass);border:1px solid var(--stroke);backdrop-filter:blur(14px);
  transition:transform .25s var(--ease),background .25s}
.lock-enter:hover{transform:translateY(-2px);background:rgba(255,255,255,.1)}
.lock-key{font-size:20px;color:var(--amber)}
.lock-hint{color:var(--ink-faint);font-size:13px}
@keyframes fade{from{opacity:0}to{opacity:1}}

/* ---------- DESKTOP ---------- */
.desktop{position:fixed;inset:0;animation:fade .8s var(--ease)}
.aurora{position:absolute;inset:0;overflow:hidden;background:radial-gradient(130% 100% at 50% -10%,#1c2050,#0a0b16 65%);z-index:0}
.aurora .a{position:absolute;border-radius:50%;filter:blur(80px);opacity:.55;mix-blend-mode:screen;animation:drift 24s ease-in-out infinite}
.a1{width:60vw;height:60vw;left:-12vw;top:-18vw;background:radial-gradient(circle,#ff9bc0,transparent 60%)}
.a2{width:55vw;height:55vw;right:-14vw;top:6vh;background:radial-gradient(circle,#7fa0ff,transparent 60%);animation-delay:-8s}
.a3{width:50vw;height:50vw;left:18vw;bottom:-22vw;background:radial-gradient(circle,#ffd28a,transparent 60%);animation-delay:-15s}
@keyframes drift{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(6vw,4vh) scale(1.1)}66%{transform:translate(-5vw,-3vh) scale(.95)}}
.grain{position:absolute;inset:0;opacity:.05;pointer-events:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>")}

/* ---------- TOP BAR ---------- */
.topbar{position:absolute;top:0;left:0;right:0;height:38px;z-index:90;display:flex;align-items:center;
  justify-content:space-between;padding:0 14px;font-size:13px;
  background:linear-gradient(180deg,rgba(8,9,20,.7),rgba(8,9,20,.25));backdrop-filter:blur(18px);
  border-bottom:1px solid var(--stroke-soft)}
.topbar-l,.topbar-r{display:flex;align-items:center;gap:6px}
.tb-logo{color:var(--amber);font-size:14px}
.tb-brand{font-family:"Sora";font-weight:600;margin-right:10px}
.tb-menu{background:none;border:none;color:var(--ink-soft);font-family:"Lexend";font-size:13px;padding:5px 9px;border-radius:7px;cursor:pointer;transition:.15s}
.tb-menu:hover{color:var(--ink);background:var(--glass-hi)}
.topbar-c{font-family:"Sora";font-weight:500;color:var(--ink-soft);font-size:13px}
.tb-stat{color:var(--ink-faint);font-family:"DM Mono",monospace;font-size:12px}
.tb-clock{font-family:"DM Mono",monospace;font-size:13px;color:var(--ink);margin-left:4px;min-width:48px;text-align:right}
.back-link{color:var(--ink-soft);text-decoration:none;font-size:12.5px;padding:5px 11px;border-radius:7px;border:1px solid var(--stroke-soft);transition:.18s;margin-right:6px}
.back-link:hover{color:var(--ink);border-color:var(--stroke);background:var(--glass-hi)}

/* ---------- DESKTOP ICONS ---------- */
.desk-icons{position:absolute;top:56px;left:18px;z-index:10;display:flex;flex-direction:column;gap:6px}
.dicon{display:flex;flex-direction:column;align-items:center;gap:6px;width:84px;padding:10px 6px;border-radius:12px;
  background:none;border:1px solid transparent;color:var(--ink-soft);cursor:pointer;font-family:"Lexend";font-size:12px;transition:.18s}
.dicon:hover{background:var(--glass-hi);border-color:var(--stroke-soft);color:var(--ink)}
.di-glyph{width:46px;height:46px;display:block}

/* ---------- DOCK ---------- */
.dock{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);z-index:95;display:flex;align-items:flex-end;gap:8px;
  padding:8px 12px;border-radius:22px;background:var(--glass);border:1px solid var(--stroke);
  backdrop-filter:blur(22px) saturate(1.4);box-shadow:0 18px 50px -12px rgba(0,0,0,.6),0 1px 0 rgba(255,255,255,.08) inset}
.dock-app{position:relative;width:50px;height:50px;border:none;background:none;cursor:pointer;padding:0;
  transition:transform .22s var(--ease)}
.dock-app:hover{transform:translateY(-12px) scale(1.12)}
.da-glyph{width:50px;height:50px;display:block;filter:drop-shadow(0 6px 12px rgba(0,0,0,.4))}
.dock-app .dot{position:absolute;bottom:-5px;left:50%;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:var(--amber);opacity:0;transition:.2s}
.dock-app.running .dot{opacity:1}
.dock-sep{width:1px;height:36px;background:var(--stroke);margin:0 4px;align-self:center}

/* ---------- WINDOWS ---------- */
.windows{position:absolute;inset:0;z-index:20;pointer-events:none}
.win{position:absolute;pointer-events:auto;display:flex;flex-direction:column;min-width:300px;min-height:200px;
  width:560px;height:400px;border-radius:var(--r-win);overflow:hidden;
  background:var(--glass);border:1px solid var(--stroke);
  backdrop-filter:blur(26px) saturate(1.3);box-shadow:var(--shadow-win);
  animation:winpop .26s var(--ease)}
@keyframes winpop{from{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:none}}
.win.minimizing{animation:winmin .28s var(--ease) forwards}
@keyframes winmin{to{opacity:0;transform:scale(.5) translateY(60vh)}}
.win.focused{box-shadow:0 36px 90px -18px rgba(0,0,0,.78),0 0 0 1px rgba(255,207,134,.18),0 2px 0 rgba(255,255,255,.06) inset}
.win.maxed{border-radius:0}
.win-bar{height:42px;display:flex;align-items:center;gap:10px;padding:0 14px;cursor:grab;flex-shrink:0;
  background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.01));border-bottom:1px solid var(--stroke-soft)}
.win-bar:active{cursor:grabbing}
.win-traffic{display:flex;gap:8px}
.tl{width:13px;height:13px;border-radius:50%;border:none;cursor:pointer;padding:0;position:relative;transition:.15s;opacity:.9}
.tl-close{background:#ff5f57}.tl-min{background:#febc2e}.tl-max{background:#28c840}
.win-traffic:hover .tl{opacity:1}
.tl::after{content:"";position:absolute;inset:0;opacity:0;transition:.15s}
.win-title{font-family:"Sora";font-weight:500;font-size:13px;color:var(--ink);flex:1;text-align:center;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.win-glyph{width:20px;height:20px;flex-shrink:0;opacity:.8}
.win-body{flex:1;overflow:hidden;display:flex;min-height:0}
.win-resize{position:absolute;right:0;bottom:0;width:16px;height:16px;z-index:6;cursor:nwse-resize;
  background:linear-gradient(135deg,transparent 55%,rgba(255,255,255,.22) 56% 64%,transparent 66%)}
.win.maxed .win-resize{display:none}

/* ---------- VIEWER ---------- */
.viewer{width:100%;height:100%;overflow:auto;background:rgba(0,0,0,.25)}
.viewer-img{display:grid;place-items:center;padding:16px}
.viewer-img img{max-width:100%;max-height:calc(100vh - 160px);border-radius:8px;box-shadow:0 12px 40px -10px rgba(0,0,0,.6)}
.viewer-text pre{white-space:pre-wrap;word-break:break-word;font-family:"DM Mono",monospace;font-size:13px;
  color:var(--ink-soft);padding:16px 20px;line-height:1.7}

/* ---------- CONTEXT MENU ---------- */
.ctxmenu{position:fixed;z-index:300;min-width:180px;padding:6px;border-radius:10px;
  background:var(--glass);border:1px solid var(--stroke);backdrop-filter:blur(22px) saturate(1.4);
  box-shadow:0 18px 50px -12px rgba(0,0,0,.6);animation:winpop .16s var(--ease)}
.ctx-item{display:block;width:100%;text-align:left;background:none;border:none;color:var(--ink-soft);
  font-family:"Lexend",sans-serif;font-size:13px;padding:8px 12px;border-radius:7px;cursor:pointer;transition:.13s}
.ctx-item:hover{background:var(--glass-hi);color:var(--ink)}
.ctx-sep{height:1px;background:var(--stroke-soft);margin:5px 8px}
.ctx-hint{display:block;padding:6px 12px 4px;color:var(--ink-faint);font-size:11px;font-family:"DM Mono",monospace}

/* ---------- TOAST ---------- */
.toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%) translateY(20px);z-index:400;
  padding:11px 20px;border-radius:30px;background:var(--glass);border:1px solid var(--stroke);
  backdrop-filter:blur(22px);color:var(--ink);font-size:13px;font-family:"Lexend",sans-serif;
  opacity:0;transition:.3s var(--ease);box-shadow:0 12px 40px -10px rgba(0,0,0,.6);pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- FILES APP ---------- */
.files{display:flex;width:100%;font-size:13px}
.fsbar{width:160px;flex-shrink:0;padding:14px 10px;border-right:1px solid var(--stroke-soft);overflow:auto;background:rgba(0,0,0,.12)}
.fsbar h4{font-size:10px;text-transform:uppercase;letter-spacing:1.2px;color:var(--ink-faint);margin:12px 8px 6px}
.fsbar h4:first-child{margin-top:0}
.fs-item{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:8px;cursor:pointer;color:var(--ink-soft);transition:.13s}
.fs-item:hover{background:var(--glass-hi);color:var(--ink)}
.fs-item.active{background:rgba(255,207,134,.16);color:var(--amber)}
.fs-main{flex:1;display:flex;flex-direction:column;min-width:0}
.fs-crumb{display:flex;align-items:center;gap:6px;padding:11px 16px;border-bottom:1px solid var(--stroke-soft);color:var(--ink-soft);font-size:12.5px;flex-wrap:wrap}
.fs-crumb b{color:var(--ink);font-weight:500;cursor:pointer}
.fs-crumb span{cursor:pointer}.fs-crumb span:hover{color:var(--ink)}
.fs-crumb i{color:var(--ink-faint);font-style:normal}
.fs-grid{flex:1;overflow:auto;padding:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:10px;align-content:start}
.fs-cell{display:flex;flex-direction:column;align-items:center;gap:7px;padding:12px 6px;border-radius:11px;cursor:pointer;
  border:1px solid transparent;transition:.13s;text-align:center}
.fs-cell:hover{background:var(--glass-hi);border-color:var(--stroke-soft)}
.fs-cell .ic{width:42px;height:42px}
.fs-cell .nm{font-size:11.5px;color:var(--ink-soft);word-break:break-word;line-height:1.3}
.fs-empty{margin:auto;color:var(--ink-faint);font-size:13px}

/* ---------- TERMINAL APP ---------- */
.term{width:100%;display:flex;flex-direction:column;font-family:"DM Mono",monospace;font-size:13px;
  background:rgba(6,7,16,.78)}
.term-out{flex:1;overflow:auto;padding:14px 16px;line-height:1.6;white-space:pre-wrap;word-break:break-word}
.term-out .ln{color:var(--ink-soft)}
.term-out .cmd{color:var(--ink)}
.term-out .ok{color:var(--mint)}.term-out .acc{color:var(--amber)}.term-out .err{color:#ff7a8a}.term-out .dim{color:var(--ink-faint)}
.term-in{display:flex;align-items:center;gap:8px;padding:10px 16px;border-top:1px solid var(--stroke-soft)}
.term-in .ps{color:var(--mint)}
.term-in input{flex:1;background:none;border:none;outline:none;color:var(--ink);font-family:"DM Mono",monospace;font-size:13px}

/* ---------- NOTES APP ---------- */
.notes{display:flex;width:100%;font-size:13px}
.nt-list{width:170px;flex-shrink:0;border-right:1px solid var(--stroke-soft);display:flex;flex-direction:column;background:rgba(0,0,0,.12)}
.nt-new{margin:10px;padding:8px;border-radius:9px;border:1px dashed var(--stroke);background:none;color:var(--amber);
  cursor:pointer;font-family:"Lexend";font-size:12.5px;transition:.15s}
.nt-new:hover{background:rgba(255,207,134,.1);border-style:solid}
.nt-items{flex:1;overflow:auto;padding:0 8px 8px}
.nt-item{padding:9px 10px;border-radius:9px;cursor:pointer;margin-bottom:4px;transition:.13s}
.nt-item:hover{background:var(--glass-hi)}
.nt-item.active{background:rgba(130,166,255,.16)}
.nt-item .t{font-weight:500;color:var(--ink);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nt-item .p{color:var(--ink-faint);font-size:11px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nt-edit{flex:1;display:flex;flex-direction:column;min-width:0}
.nt-edit input.ti{background:none;border:none;outline:none;color:var(--ink);font-family:"Sora";font-weight:600;font-size:18px;padding:16px 18px 6px}
.nt-meta{padding:0 18px 8px;color:var(--ink-faint);font-size:11px;border-bottom:1px solid var(--stroke-soft);font-family:"DM Mono",monospace}
.nt-edit textarea{flex:1;background:none;border:none;outline:none;resize:none;color:var(--ink-soft);
  font-family:"Lexend";font-size:14px;line-height:1.7;padding:14px 18px}
.nt-empty{margin:auto;color:var(--ink-faint)}

/* ---------- CALC APP ---------- */
.calc{width:100%;display:flex;flex-direction:column;background:rgba(6,7,16,.5)}
.calc-disp{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-end;padding:18px 22px;gap:4px;min-height:90px}
.calc-prev{color:var(--ink-faint);font-family:"DM Mono",monospace;font-size:14px;min-height:18px}
.calc-now{font-family:"Sora";font-weight:300;font-size:46px;letter-spacing:-1px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;max-width:100%}
.calc-keys{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--stroke-soft)}
.calc-keys button{border:none;padding:18px 0;font-family:"Sora";font-size:18px;cursor:pointer;color:var(--ink);
  background:rgba(22,24,48,.6);transition:.1s}
.calc-keys button:hover{background:rgba(255,255,255,.08)}
.calc-keys button:active{background:rgba(255,255,255,.14)}
.calc-keys .op{color:var(--amber)}
.calc-keys .eq{background:linear-gradient(135deg,var(--amber),var(--rose));color:#1a1320;font-weight:600}
.calc-keys .eq:hover{filter:brightness(1.08)}
.calc-keys .fn{color:var(--blue)}

/* ---------- ABOUT APP ---------- */
.about{width:100%;overflow:auto;padding:30px 34px;display:flex;flex-direction:column;gap:14px}
.about .mk{width:54px;height:54px;animation:spin 12s linear infinite}
.about h2{font-family:"Sora";font-weight:700;font-size:26px;letter-spacing:-.5px}
.about h2 span{background:linear-gradient(90deg,var(--amber),var(--rose),var(--blue));-webkit-background-clip:text;background-clip:text;color:transparent}
.about p{color:var(--ink-soft);font-size:14px;line-height:1.7;max-width:46ch}
.about .specs{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.about .specs span{font-family:"DM Mono",monospace;font-size:11.5px;padding:5px 11px;border-radius:20px;border:1px solid var(--stroke);color:var(--ink-soft)}
.about a{color:var(--amber);text-decoration:none;font-weight:500}
.about a:hover{text-decoration:underline}
.about .credit{margin-top:auto;color:var(--ink-faint);font-size:12px;padding-top:10px}

/* ---------- RESPONSIVE ---------- */
@media (max-width:720px){
  .desk-icons{display:none}
  .win{width:auto !important;height:auto !important;left:8px !important;right:8px !important;top:48px !important;
    bottom:88px !important;min-width:0}
  .win.maxed{inset:38px 0 0 0 !important}
  .fsbar{width:120px}.nt-list{width:120px}
  .tb-menu{display:none}
  .dock{gap:4px;padding:7px 9px}.dock-app{width:42px;height:42px}.da-glyph{width:42px;height:42px}
  .back-link{padding:4px 8px;font-size:11px}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001s !important;animation-iteration-count:1 !important}
}
