aura-os/public/style.css

775 lines
18 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ============================================================
AURA OS — Koyu Siber Web İşletim Sistemi Tema
============================================================ */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Consolas', 'Courier New', 'Share Tech Mono', monospace;
}
html, body {
width: 100%;
height: 100%;
overflow: hidden;
background: #020208;
color: #c7ffea;
}
/* ---------- ANA YERLEŞİM ---------- */
body {
display: flex;
flex-direction: column;
}
/* ---------- MASAÜSTÜ ARKA PLAN ---------- */
#desktop-bg {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 50px; /* taskbar kadar boşluk */
z-index: 1;
background:
radial-gradient(ellipse at 20% 80%, rgba(0, 100, 255, 0.18), transparent 55%),
radial-gradient(ellipse at 80% 15%, rgba(255, 0, 200, 0.16), transparent 50%),
radial-gradient(ellipse at 50% 50%, rgba(0, 255, 200, 0.05), transparent 70%),
linear-gradient(135deg, #01010c 0%, #050521 45%, #031024 100%);
user-select: none;
}
/* Siber ızgara animasyon şeritleri */
#desktop-bg .grid-overlay {
position: absolute;
inset: 0;
background:
repeating-linear-gradient(0deg, rgba(0, 255, 200, 0.07) 0px, rgba(0, 255, 200, 0.07) 1px, transparent 1px, transparent 48px),
repeating-linear-gradient(90deg, rgba(0, 255, 200, 0.07) 0px, rgba(0, 255, 200, 0.07) 1px, transparent 1px, transparent 48px);
opacity: 0.5;
pointer-events: none;
}
/* CRT tarama çizgileri */
#desktop-bg .scanlines {
position: absolute;
inset: 0;
background: repeating-linear-gradient(0deg, rgba(0,0,0,0.18) 0px, rgba(0,0,0,0.18) 1px, transparent 1px, transparent 3px);
pointer-events: none;
opacity: 0.4;
}
/* Merkezi neon parlama */
#desktop-bg .radial-glow {
position: absolute;
width: 45vw;
height: 45vw;
left: 50%;
top: 40%;
transform: translate(-50%, -50%);
background: radial-gradient(circle, rgba(0,255,220,0.08) 0%, transparent 60%);
filter: blur(30px);
animation: glowPulse 6s ease-in-out infinite;
pointer-events: none;
}
@keyframes glowPulse {
0%, 100% { opacity: 0.6; }
50% { opacity: 1; }
}
/* Sol üst sistem bilgisi */
#sys-info {
position: absolute;
top: 26px;
left: 34px;
font-size: 22px;
letter-spacing: 3px;
color: rgba(0, 255, 200, 0.75);
text-shadow: 0 0 12px rgba(0, 255, 200, 0.55);
display: flex;
gap: 14px;
align-items: center;
pointer-events: none;
user-select: none;
}
#sys-info #sys-name {
color: #00ffcc;
font-weight: bold;
}
#sys-info .sys-sep { opacity: 0.35; color: #ffffff; font-size: 16px; }
#sys-info #sys-ver { color: #ff00e0; font-size: 15px; letter-spacing: 2px; }
#sys-info #sys-security { color: #39ff14; font-size: 14px; }
/* ---------- MASAÜSTÜ SİMGELERİ ---------- */
#desktop-icons {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 50px;
z-index: 3;
padding: 40px 20px;
display: flex;
flex-direction: column;
flex-wrap: wrap;
align-content: flex-start;
gap: 10px;
pointer-events: none;
}
.app-icon {
width: 92px;
padding: 12px 6px 8px;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
border-radius: 8px;
border: 1px solid transparent;
cursor: pointer;
pointer-events: auto;
user-select: none;
transition: background 0.15s, border-color 0.15s, transform 0.1s;
}
.app-icon:hover {
background: rgba(0, 255, 200, 0.08);
border-color: rgba(0, 255, 200, 0.35);
}
.app-icon:active { transform: scale(0.95); }
.app-icon .icon-img {
width: 52px;
height: 52px;
display: flex;
align-items: center;
justify-content: center;
font-size: 30px;
border-radius: 10px;
color: #000;
text-shadow: 0 0 8px rgba(255,255,255,0.3);
box-shadow: 0 0 14px rgba(0,255,200,0.4);
}
.app-icon .icon-label {
font-size: 11px;
letter-spacing: 1px;
color: #d0fff4;
text-align: center;
text-shadow: 0 0 6px rgba(0,255,200,0.8), 0 1px 3px #000;
word-break: break-word;
}
.app-icon.selected {
background: rgba(0, 255, 200, 0.14);
border-color: rgba(0, 255, 200, 0.6);
}
/* Uygulamaya özgü ikon renkleri */
.app-icon[data-app="notes"] .icon-img { background: linear-gradient(135deg, #39ff14, #00b34a); }
.app-icon[data-app="terminal"] .icon-img { background: linear-gradient(135deg, #ffffff, #889999); color: #080808; }
.app-icon[data-app="paint"] .icon-img { background: linear-gradient(135deg, #ff00ff, #ffaa00); }
/* ---------- PENCERE KATMANI ---------- */
#window-layer {
position: absolute;
inset: 0 0 50px 0;
z-index: 5;
pointer-events: none;
}
/* ---------- AURA PENCERESİ ---------- */
.aura-window {
position: absolute;
min-width: 320px;
min-height: 200px;
display: flex;
flex-direction: column;
background: rgba(4, 12, 22, 0.94);
border: 1px solid rgba(0, 255, 200, 0.5);
border-radius: 8px;
box-shadow: 0 0 0 1px rgba(0,255,200,0.15),
0 0 22px rgba(0,255,200,0.22),
0 18px 50px rgba(0,0,0,0.8);
pointer-events: auto;
overflow: hidden;
user-select: none;
}
.aura-window.active {
border-color: rgba(0, 255, 200, 0.95);
box-shadow: 0 0 0 1px rgba(0,255,200,0.3),
0 0 36px rgba(0,255,200,0.4),
0 20px 60px rgba(0,0,0,0.9);
}
.aura-window.minimized {
display: none;
}
.aura-window .window-titlebar {
display: flex;
align-items: center;
background: linear-gradient(90deg, rgba(0, 60, 50, 0.9), rgba(2, 20, 40, 0.95));
border-bottom: 1px solid rgba(0,255,200,0.35);
height: 38px;
padding: 0 8px 0 12px;
cursor: grab;
flex-shrink: 0;
}
.aura-window .window-titlebar:active { cursor: grabbing; }
.window-titlebar .win-icon { margin-right: 8px; font-size: 16px; }
.window-titlebar .win-title {
flex: 1;
font-size: 13px;
letter-spacing: 1px;
color: #a9ffe9;
text-shadow: 0 0 6px rgba(0,255,200,0.6);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.window-titlebar .win-btns { display: flex; gap: 6px; }
.win-btn {
width: 30px;
height: 24px;
border: 1px solid rgba(0,255,200,0.4);
background: rgba(0, 40, 35, 0.6);
color: #8affdd;
font-size: 13px;
line-height: 1;
border-radius: 4px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.12s;
}
.win-btn:hover { background: rgba(0,255,200,0.22); color: #fff; }
.win-btn.btn-min { font-size: 15px; }
.win-btn.btn-close { border-color: rgba(255,60,60,0.6); color: #ff7777; }
.win-btn.btn-close:hover { background: rgba(255,60,60,0.3); color: #fff; }
.aura-window .window-body {
flex: 1;
display: flex;
flex-direction: column;
overflow: auto;
user-select: text;
background: rgba(2, 8, 16, 0.9);
min-height: 0;
min-width: 0;
}
/* Uygulama kök konteynerları pencere gövdesini tam doldursun (flex column) */
.term-app, .note-app, .paint-app {
flex: 1 1 auto;
min-height: 0;
min-width: 0;
}
/* ---------- GÖREV ÇUBUĞU (TASKBAR) ---------- */
#taskbar {
position: fixed;
left: 0;
right: 0;
bottom: 0;
height: 50px;
z-index: 100;
background: linear-gradient(180deg, rgba(8, 16, 32, 0.98), rgba(2, 6, 14, 0.99));
border-top: 1px solid rgba(0, 255, 200, 0.45);
display: flex;
align-items: center;
padding: 0 10px;
gap: 10px;
box-shadow: 0 -6px 24px rgba(0,255,200,0.08);
user-select: none;
}
#start-btn {
display: flex;
align-items: center;
gap: 8px;
padding: 6px 14px;
border: 1px solid rgba(0,255,200,0.5);
border-radius: 6px;
background: linear-gradient(90deg, rgba(0,80,70,0.55), rgba(0,60,90,0.55));
cursor: pointer;
color: #8affdd;
font-size: 14px;
font-weight: bold;
letter-spacing: 1px;
transition: all 0.15s;
flex-shrink: 0;
}
#start-btn:hover { background: rgba(0,255,200,0.25); box-shadow: 0 0 12px rgba(0,255,200,0.4); }
#start-btn.open { background: rgba(0,255,200,0.3); box-shadow: 0 0 16px rgba(0,255,200,0.55); }
#start-btn .start-icon { font-size: 13px; color: #00ffcc; }
#taskbar-separator {
width: 1px;
height: 28px;
background: rgba(0,255,200,0.3);
flex-shrink: 0;
}
/* Açık pencere butonları */
#taskbar-windows {
flex: 1;
display: flex;
align-items: center;
gap: 8px;
overflow-x: auto;
padding: 2px 0;
}
#taskbar-windows::-webkit-scrollbar { height: 4px; }
#taskbar-windows::-webkit-scrollbar-thumb { background: rgba(0,255,200,0.4); }
.task-window-btn {
flex-shrink: 0;
max-width: 170px;
min-width: 60px;
height: 32px;
display: flex;
align-items: center;
gap: 6px;
padding: 0 10px;
border: 1px solid rgba(0,255,200,0.3);
border-radius: 6px;
background: rgba(0, 30, 30, 0.4);
color: #7fe8cc;
font-size: 12px;
cursor: pointer;
transition: all 0.13s;
overflow: hidden;
white-space: nowrap;
}
.task-window-btn .tw-icon { font-size: 13px; flex-shrink: 0; }
.task-window-btn .tw-label { overflow: hidden; text-overflow: ellipsis; }
.task-window-btn:hover { background: rgba(0,255,200,0.18); }
.task-window-btn.active {
background: rgba(0,255,200,0.3);
border-color: rgba(0,255,200,0.8);
color: #fff;
box-shadow: 0 0 10px rgba(0,255,200,0.3);
font-weight: bold;
}
/* Saat kısmı */
#taskbar-right {
flex-shrink: 0;
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 1px;
padding: 4px 8px;
border-left: 1px solid rgba(0,255,200,0.2);
margin-left: 6px;
}
#taskbar-clock {
font-size: 17px;
font-weight: bold;
color: #00ffcc;
text-shadow: 0 0 8px rgba(0,255,200,0.7);
font-variant-numeric: tabular-nums;
letter-spacing: 1px;
}
#taskbar-date {
font-size: 9px;
letter-spacing: 1px;
color: #6aa;
text-transform: uppercase;
}
/* ---------- BAŞLAT MENÜSÜ ---------- */
#start-menu {
position: fixed;
left: 10px;
bottom: 58px;
width: 300px;
background: rgba(3, 8, 18, 0.96);
border: 1px solid rgba(0,255,200,0.5);
border-radius: 6px;
box-shadow: 0 0 30px rgba(0,255,200,0.2), 0 12px 40px rgba(0,0,0,0.9);
z-index: 200;
overflow: hidden;
}
#start-menu.hidden { display: none; }
.start-header {
display: flex;
align-items: center;
gap: 10px;
padding: 12px 14px;
background: linear-gradient(90deg, rgba(0,90,70,0.5), rgba(0,40,80,0.5));
border-bottom: 1px solid rgba(0,255,200,0.3);
}
.start-header .start-logo { font-size: 24px; color: #00ffcc; text-shadow: 0 0 10px #0fc; }
.start-header .start-title {
font-size: 18px;
font-weight: bold;
color: #00ffcc;
letter-spacing: 3px;
text-shadow: 0 0 8px rgba(0,255,200,0.6);
}
.start-body {
padding: 10px;
display: flex;
flex-direction: column;
gap: 10px;
}
.start-user {
display: flex;
align-items: center;
gap: 10px;
padding: 8px;
border: 1px solid rgba(0,255,200,0.2);
border-radius: 8px;
background: rgba(0,50,50,0.2);
}
.user-avatar {
width: 36px;
height: 36px;
border-radius: 50%;
background: linear-gradient(135deg, #00ffcc, #0066ff);
display: flex;
align-items: center;
justify-content: center;
color: #000;
font-weight: bold;
font-size: 13px;
}
.user-meta { display: flex; flex-direction: column; }
.user-name { color: #00ffcc; font-size: 14px; font-weight: bold; }
.user-status { color: #39ff14; font-size: 10px; letter-spacing: 1px; }
.start-apps-title {
font-size: 10px;
color: #4a8080;
letter-spacing: 3px;
margin-top: 4px;
}
.start-apps {
display: flex;
flex-direction: column;
gap: 4px;
}
.start-app-item {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 10px;
border-radius: 6px;
cursor: pointer;
border: 1px solid transparent;
transition: all 0.12s;
}
.start-app-item:hover { background: rgba(0,255,200,0.12); border-color: rgba(0,255,200,0.3); }
.start-app-item .sa-icon { font-size: 20px; width: 26px; text-align: center; }
.start-app-item .sa-meta { display: flex; flex-direction: column; }
.start-app-item .sa-name { color: #b5ffe9; font-size: 13px; }
.start-app-item .sa-desc { color: #4a8080; font-size: 9px; letter-spacing: 0.5px; }
.start-actions { border-top: 1px solid rgba(0,255,200,0.15); padding-top: 8px; display: flex; flex-direction: column; }
.start-action {
display: flex;
align-items: center;
gap: 10px;
font-size: 12px;
color: #8affdd;
padding: 7px 8px;
}
.start-action.muted { color: #4a6a6a; }
/* ---------- UYGULAMA: NOT DEFTERİ ---------- */
.note-app {
display: flex;
flex-direction: column;
height: 100%;
background: #02070c;
}
.note-statusbar {
display: flex;
align-items: center;
gap: 8px;
padding: 5px 12px;
font-size: 10px;
color: #5a8a7a;
border-bottom: 1px solid rgba(0,255,200,0.15);
background: rgba(0,30,30,0.3);
}
.note-status-dot {
width: 7px;
height: 7px;
border-radius: 50%;
background: #39ff14;
box-shadow: 0 0 6px #39ff14;
animation: blinkDot 1.6s infinite;
}
@keyframes blinkDot { 0%,100%{opacity:1;} 50%{opacity:0.3;} }
.note-enc-tag { margin-left: auto; }
.note-textarea {
flex: 1;
min-height: 170px;
background: transparent;
border: none;
outline: none;
resize: none;
color: #b7ffe4;
font-size: 14px;
line-height: 1.5;
padding: 12px 14px;
caret-color: #00ffcc;
}
.note-textarea::placeholder { color: #2a6a5a; }
.note-toolbar {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 12px;
border-top: 1px solid rgba(0,255,200,0.2);
border-bottom: 1px solid rgba(0,255,200,0.15);
}
.note-save-btn {
padding: 7px 16px;
background: linear-gradient(90deg, rgba(0,255,200,0.25), rgba(0,140,255,0.25));
border: 1px solid rgba(0,255,200,0.6);
color: #adffe9;
font-weight: bold;
border-radius: 5px;
cursor: pointer;
font-size: 13px;
letter-spacing: 1px;
transition: all 0.15s;
}
.note-save-btn:hover { background: rgba(0,255,200,0.4); box-shadow: 0 0 10px rgba(0,255,200,0.3); }
.note-save-btn:disabled { opacity: 0.5; cursor: not-allowed; box-shadow: none; }
.note-toolbar .note-save-hint { font-size: 10px; color: #4a8080; }
.note-saved-msg { font-size: 11px; color: #39ff14; margin-left: auto; text-shadow: 0 0 5px rgba(57,255,20,0.6); }
.note-list-label {
font-size: 10px;
letter-spacing: 3px;
color: #4a8080;
padding: 6px 14px;
background: rgba(0,30,30,0.2);
}
.note-list {
max-height: 220px;
overflow-y: auto;
padding: 0 10px 10px;
display: flex;
flex-direction: column;
gap: 6px;
}
.note-item {
border: 1px solid rgba(0,255,200,0.25);
border-left: 3px solid #00ffcc;
border-radius: 4px;
background: rgba(0,40,40,0.25);
padding: 7px 10px;
}
.note-item .ni-text { font-size: 12px; color: #c4ffe9; white-space: pre-wrap; word-break: break-word; user-select: text; }
.note-item .ni-date { font-size: 9px; color: #39ff14; margin-top: 4px; letter-spacing: 1px; }
.note-item .ni-empty { color: #4a8080; font-size: 11px; text-align: center; padding: 20px 0; }
.note-list .ni-empty, .note-list-label.note-none { all: unset; text-align: center; color: #4a8080; font-size: 11px; }
/* ---------- UYGULAMA: HACKER TERMİNALİ ---------- */
.term-app {
height: 100%;
display: flex;
background: #010902;
}
.term-crt {
position: relative;
flex: 1;
display: flex;
flex-direction: column;
padding: 10px 12px;
overflow: hidden;
background:
radial-gradient(ellipse at center, rgba(0,130,60,0.08), transparent 70%),
#010902;
color: #37ff8b;
text-shadow: 0 0 6px rgba(55,255,139,0.55);
font-size: 13px;
line-height: 1.45;
}
.term-output {
flex: 1;
overflow-y: auto;
white-space: pre-wrap;
word-break: break-all;
}
.term-output::-webkit-scrollbar { width: 5px; }
.term-output::-webkit-scrollbar-thumb { background: rgba(55,255,139,0.35); }
.term-inputline {
display: flex;
align-items: center;
gap: 6px;
padding-top: 5px;
border-top: 1px solid rgba(55,255,139,0.2);
}
.term-prompt { color: #37ff8b; font-weight: bold; flex-shrink: 0; }
.term-input {
flex: 1;
background: transparent;
border: none;
outline: none;
color: #ccffdd;
font-size: 13px;
caret-color: #37ff8b;
}
/* Terminalde CRT tarama efekti */
.term-crt::after {
content: '';
position: absolute;
inset: 0;
pointer-events: none;
background: repeating-linear-gradient(0deg, rgba(0,0,0,0.12) 0px, transparent 1px, transparent 2px);
opacity: 0.4;
}
.term-success { color: #37ff8b; }
.term-info { color: #0fd0ff; }
.term-warn { color: #ffc400; }
.term-error { color: #ff4d4d; }
.term-dim { color: #2c8f55; }
/* ---------- UYGULAMA: NEON PAINT ---------- */
.paint-app {
display: flex;
flex-direction: column;
height: 100%;
background: #03060d;
}
.paint-toolbar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
padding: 8px 10px;
border-bottom: 1px solid rgba(255,0,255,0.3);
background: rgba(20,0,20,0.25);
flex-shrink: 0;
}
.paint-tools { display: flex; gap: 8px; }
.color-btn {
width: 30px;
height: 30px;
border-radius: 50%;
border: 2px solid rgba(255,255,255,0.2);
cursor: pointer;
transition: all 0.13s;
box-shadow: 0 0 8px rgba(0,0,0,0.5);
}
.color-btn:hover { transform: scale(1.2); box-shadow: 0 0 14px currentColor; }
.color-btn.active {
border: 3px solid #fff;
box-shadow: 0 0 16px currentColor;
transform: scale(1.15);
}
.paint-clear-btn {
padding: 7px 14px;
border: 1px solid rgba(255,90,90,0.6);
background: rgba(80,10,10,0.4);
color: #ff9b9b;
border-radius: 5px;
cursor: pointer;
font-size: 12px;
font-weight: bold;
letter-spacing: 1px;
transition: all 0.15s;
}
.paint-clear-btn:hover { background: rgba(200,30,30,0.45); color: #fff; box-shadow: 0 0 12px rgba(255,60,60,0.4); }
.paint-canvas-wrap {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
padding: 10px;
overflow: hidden;
background:
radial-gradient(circle at center, rgba(255,0,255,0.06), transparent 60%),
#050510;
}
.paint-canvas {
background: #05060f;
border: 1px solid rgba(255,0,255,0.25);
border-radius: 4px;
box-shadow: 0 0 30px rgba(255,0,255,0.15);
cursor: crosshair;
touch-action: none;
}
.paint-hint {
font-size: 9px;
color: #5a4a6a;
padding: 4px 10px;
text-align: center;
letter-spacing: 1px;
border-top: 1px solid rgba(255,0,255,0.1);
flex-shrink: 0;
flex-shrink: 0;
}