projectbased/assets/app.css
SHA-256: 39249fd453af1231a27bf1c8336ccf29c73b29d0e6596de0533a3c492cc04c02
/* Projekt-Ökonomie Demo – UI v6 (Light/Dark + Typography fixes) */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');
:root{
--bg:#0b1220;
--fg:#E8EDF7;
--muted:rgba(232,237,247,0.86);
--card:rgba(255,255,255,0.085);
--card-border:rgba(255,255,255,.10);
--nav:rgba(255,255,255,.06);
--nav-border:rgba(255,255,255,.10);
--link:#9FD3FF;
--primary:#2a69ff;
--input-bg:rgba(255,255,255,.08);
--input-border:rgba(255,255,255,.14);
--table-border:rgba(255,255,255,.12);
--soft:rgba(255,255,255,0.07);
--soft-border:rgba(255,255,255,0.14);
}
[data-theme="light"]{
--bg:#f6f8fc;
--fg:#0f172a;
--muted:rgba(15,23,42,.70);
--card:rgba(255,255,255,.92);
--card-border:rgba(15,23,42,.10);
--nav:rgba(255,255,255,.90);
--nav-border:rgba(15,23,42,.10);
--link:#0b5ed7;
--primary:#2a69ff;
--input-bg:rgba(15,23,42,.04);
--input-border:rgba(15,23,42,.18);
--table-border:rgba(15,23,42,.12);
--soft:rgba(42,105,255,.10);
--soft-border:rgba(42,105,255,.18);
}
html,body{height:100%;}
html{font-size:16px;}
body{
background:
radial-gradient(900px 500px at 15% 10%, rgba(42,105,255,.20), transparent 60%),
radial-gradient(900px 500px at 85% 20%, rgba(159,211,255,.18), transparent 55%),
radial-gradient(900px 500px at 50% 95%, rgba(255,77,94,.10), transparent 55%),
var(--bg);
color:var(--fg);
}
/* Typography */
body{ font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; text-rendering: optimizeLegibility; }
h1,h2,h3,h4,h5,h6{ color: var(--fg); }
.lead{ color: var(--fg); opacity: .86; }
[data-theme="light"] .lead{ opacity: .82; }
/* Theme-aware controls (Bootstrap overrides) */
.btn-outline-light{
color: var(--fg) !important;
border-color: var(--card-border) !important;
background: transparent !important;
}
.btn-outline-light:hover{
background: var(--soft) !important;
border-color: var(--soft-border) !important;
}
.badge.badge-soft{
background: var(--soft) !important;
border: 1px solid var(--soft-border) !important;
color: var(--fg) !important;
}
.table thead th{ color: var(--fg); opacity: .9; }
.form-label{ color: var(--fg); opacity: .9; }
/* Dark mode contrast tweak */
[data-theme="dark"] :root{}
[data-theme="dark"] .muted{ color: rgba(232,237,247,0.86) !important; }
a{color:var(--link);}
.muted{color:var(--muted);}
.navbar{
background:var(--nav)!important;
border-bottom:1px solid var(--nav-border);
backdrop-filter:blur(10px);
}
.card{
background:var(--card);
border:1px solid var(--card-border);
border-radius:16px;
}
.badge-soft{
background:var(--soft);
color:var(--fg);
border:1px solid var(--soft-border);
}
h1,h2,h3,h4,h5,h6{color:var(--fg);}
.btn-primary{background:var(--primary);border-color:var(--primary);}
.btn-outline-light{border-color:rgba(255,255,255,.35);color:var(--fg);}
[data-theme="light"] .btn-outline-light{border-color:rgba(15,23,42,.25);}
.form-control,.form-select,textarea{
background:var(--input-bg)!important;
border:1px solid var(--input-border)!important;
color:var(--fg)!important;
}
.form-control:focus,.form-select:focus{box-shadow:none;border-color:rgba(159,211,255,.6)!important;}
.form-control::placeholder{color:rgba(232,237,247,.55);}
[data-theme="light"] .form-control::placeholder{color:rgba(15,23,42,.45);}
.table{color:var(--fg);}
.table td,.table th{border-top:1px solid var(--table-border)!important;}
.table thead th{color:var(--fg);border-bottom:1px solid var(--table-border)!important;}
.kpi{display:flex;gap:12px;align-items:center;}
.kpi .dot{width:10px;height:10px;border-radius:999px;background:var(--primary);box-shadow:0 0 0 6px rgba(42,105,255,.18);}
.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.codebox{
background:rgba(0,0,0,.28);
border:1px solid rgba(255,255,255,.10);
border-radius:14px;
padding:14px;
overflow:auto;
font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
font-size:13px;
line-height:1.45;
}
[data-theme="light"] .codebox{background:rgba(15,23,42,.04);border-color:rgba(15,23,42,.10);}
.diff .add{background:rgba(25,135,84,.20);}
.diff .del{background:rgba(220,53,69,.20);}
.diff .ln{color:var(--muted);user-select:none;}
/* v4 layout helpers */
.container-narrow{ max-width: 1100px; }
.hero{
padding: 28px;
border-radius: 18px;
background: linear-gradient(135deg, rgba(42,105,255,0.22), rgba(159,211,255,0.10));
border: 1px solid var(--card-border);
}
[data-theme="light"] .hero{
background: linear-gradient(135deg, rgba(42,105,255,0.10), rgba(159,211,255,0.06));
}
.hero h1{ letter-spacing:-0.4px; }
.hero .lead{ color: var(--muted); max-width: 60ch; }
.chip{
display:inline-flex; align-items:center; gap:8px;
padding:6px 10px;
border-radius: 999px;
border:1px solid var(--soft-border);
background: var(--soft);
color: var(--fg);
font-size: 12px;
}
.grid-2{ display:grid; grid-template-columns: 1fr; gap:16px; }
@media (min-width: 992px){ .grid-2{ grid-template-columns: 1.2fr 0.8fr; } }
.kpi-box{
display:grid; grid-template-columns: repeat(2, 1fr); gap:12px;
}
.kpi-tile{
padding: 14px;
border-radius: 16px;
border: 1px solid var(--card-border);
background: var(--card);
}
.kpi-tile .num{ font-size: 22px; font-weight: 700; letter-spacing:-0.3px; }
.kpi-tile .lbl{ color: var(--muted); font-size: 12px; }
.btn{
border-radius: 12px;
}
/* v5: Sidebar layout + animated background orb + contrast fixes */
body{ position:relative; overflow-x:hidden; }
.bg-orb{
position: fixed;
inset: 0;
pointer-events: none;
z-index: 0;
}
.bg-orb::before{
content:"";
position:absolute;
width: 520px;
height: 520px;
left: -140px;
top: 18%;
border-radius: 999px;
background: radial-gradient(circle at 30% 30%, rgba(42,105,255,0.35), rgba(42,105,255,0.12), transparent 65%);
filter: blur(1px);
animation: orbPulse 6.5s ease-in-out infinite;
}
.bg-orb::after{
content:"";
position:absolute;
width: 460px;
height: 460px;
right: -160px;
top: 55%;
border-radius: 999px;
background: radial-gradient(circle at 60% 40%, rgba(159,211,255,0.30), rgba(159,211,255,0.10), transparent 65%);
animation: orbDrift 10s ease-in-out infinite;
opacity: .85;
}
@keyframes orbPulse{
0%,100%{ transform: scale(1) translateY(0); opacity: .95; }
50%{ transform: scale(1.08) translateY(-10px); opacity: .75; }
}
@keyframes orbDrift{
0%,100%{ transform: translateY(0) translateX(0) scale(1); }
50%{ transform: translateY(-18px) translateX(-10px) scale(1.05); }
}
/* Shell */
.layout-shell{
position: relative;
z-index: 1;
display:flex;
min-height: 100vh;
}
.sidebar{
width: 260px;
flex: 0 0 260px;
padding: 18px 14px;
background: rgba(255,255,255,0.05);
border-right: 1px solid var(--nav-border);
backdrop-filter: blur(10px);
}
[data-theme="light"] .sidebar{
background: rgba(255,255,255,0.72);
border-right: 1px solid rgba(15,23,42,0.10);
}
.sidebar .brand{
font-weight: 800;
letter-spacing:-0.3px;
margin-bottom: 10px;
}
.side-group{ margin-top: 14px; }
.side-title{
color: var(--muted);
font-size: 11px;
text-transform: uppercase;
letter-spacing: .9px;
margin: 10px 10px 6px;
}
.side-link{
display:flex;
align-items:center;
justify-content: space-between;
gap:10px;
padding: 10px 12px;
border-radius: 12px;
color: var(--fg);
text-decoration:none;
border: 1px solid transparent;
}
.side-link:hover{
background: rgba(255,255,255,0.06);
border-color: var(--card-border);
}
[data-theme="light"] .side-link:hover{
background: rgba(15,23,42,0.04);
}
.side-pill{
font-size: 11px;
padding: 2px 8px;
border-radius: 999px;
border: 1px solid var(--soft-border);
background: var(--soft);
color: var(--fg);
}
.side-actions{
margin-top: 14px;
padding-top: 14px;
border-top: 1px solid var(--nav-border);
display:flex;
flex-direction: column;
gap:8px;
}
.content{
flex: 1 1 auto;
min-width: 0;
}
.topbar{
position: sticky;
top: 0;
z-index: 2;
padding: 14px 18px;
border-bottom: 1px solid var(--nav-border);
background: rgba(255,255,255,0.04);
backdrop-filter: blur(12px);
}
[data-theme="light"] .topbar{
background: rgba(255,255,255,0.78);
}
.content-inner{
padding: 20px 18px 36px;
}
/* Contrast improvements */
.hero .lead{ color: var(--fg); opacity: .82; }
.muted{ opacity: .85; }
[data-theme="dark"] .muted{ color: rgba(232,237,247,0.82); }
/* v7: Dark-mode text utility fixes (Bootstrap + custom) */
[data-theme="dark"] .text-muted,
[data-theme="dark"] .text-body-secondary,
[data-theme="dark"] .text-secondary{
color: var(--muted) !important;
}
[data-theme="dark"] .text-dark{
color: var(--fg) !important;
}
[data-theme="dark"] .nav-link,
[data-theme="dark"] a.side-link{
color: var(--fg) !important;
}
[data-theme="dark"] .card,
[data-theme="dark"] .hero{
color: var(--fg);
}
[data-theme="dark"] .card .muted,
[data-theme="dark"] .hero .muted{
color: var(--muted) !important;
}
[data-theme="dark"] .table td,
[data-theme="dark"] .table th{
color: var(--fg);
}