Files
Deep-Package-Inspection/src/app/globals.css
T
rafif dd4c8f6876 feat(source2): push all latest files - device labeling, help system, proxy docs, database isolation fix
- Added DOKUMENTASI-FILTER-PER-SITE.md (site isolation docs)
- Fixed start-with-env.js to force-load .env.production
- Fixed MONGODB_URI hostname from mongodb-netify to mongodb.prod.proit.id
- Updated .gitignore to exclude sensitive scripts and credential files
- Minor UI and labeling improvements
2026-07-29 14:14:29 +07:00

201 lines
4.5 KiB
CSS
Raw 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.
@import "tailwindcss";
@import "./theme.css";
@import "./variables.css";
/* ── Zero Horizontal Scrollbar – Global Enforcement ── */
/* Per AGENTS.md §9: horizontal scrollbar strictly prohibited at any level. */
html {
overflow-x: hidden;
}
body {
overflow-x: hidden;
width: 100%;
}
body {
font-family: var(--font-sans);
color: var(--foreground);
/* Optical sizing + smoothing */
font-optical-sizing: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}
/* 1-Second Dual-Layer Smooth Background Crossfade */
/* Dark Mode Background Layer (Active by default, fades out on .light) */
body::before,
body::after {
content: "";
position: fixed;
inset: 0;
z-index: -1;
transition: opacity 150ms ease-in-out;
pointer-events: none;
background-size: cover;
background-attachment: fixed;
}
body::before {
background-color: #09090b;
background-image:
radial-gradient(circle at 0% 0%, rgba(30, 58, 138, 0.35) 0%, transparent 40%),
radial-gradient(circle at 100% 20%, rgba(220, 38, 38, 0.15) 0%, transparent 40%),
radial-gradient(circle at 50% 100%, rgba(15, 23, 42, 0.8) 0%, transparent 60%);
opacity: 1;
}
.light body::before {
opacity: 0;
}
/* Light Mode Background Layer (Hidden by default, fades in on .light) */
body::after {
background-color: #f1f5f9;
background-image:
radial-gradient(circle at 0% 0%, rgba(59, 130, 246, 0.1) 0px, transparent 40%),
radial-gradient(circle at 100% 0%, rgba(239, 68, 68, 0.05) 0px, transparent 40%);
opacity: 0;
}
.light body::after {
opacity: 1;
}
/* Ambient Colors for Cards & Sidebars */
:root {
--ambient-card-bg: rgba(24, 24, 27, 0.7);
--ambient-sidebar-bg: rgba(9, 9, 11, 0.95);
}
.light {
--ambient-card-bg: rgba(255, 255, 255, 0.9);
--ambient-sidebar-bg: rgba(255, 255, 255, 1);
}
.bg-card {
background-color: var(--ambient-card-bg) !important;
background-image: none !important;
backdrop-filter: blur(12px);
}
.bg-sidebar {
background-color: var(--ambient-sidebar-bg) !important;
background-image: none !important;
backdrop-filter: blur(16px);
}
/* Global smooth transition for theme change */
*,
*::before,
*::after {
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, box-shadow, opacity, transform !important;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important;
transition-duration: 500ms !important;
}
canvas {
transition: none !important;
}
/* View Transitions API (For perfect whole-screen crossfade including WebGL/Canvas) */
::view-transition-old(root),
::view-transition-new(root) {
animation-duration: 500ms;
animation-timing-function: ease-in-out;
}
/* ── Custom Scrollbar for Fixed Modals ── */
.custom-scrollbar::-webkit-scrollbar {
width: 6px;
height: 6px;
}
.custom-scrollbar::-webkit-scrollbar-track {
background: transparent;
}
.custom-scrollbar::-webkit-scrollbar-thumb {
background-color: var(--muted);
border-radius: 10px;
}
.dark .custom-scrollbar::-webkit-scrollbar-thumb {
background-color: rgba(255, 255, 255, 0.1);
}
.light .custom-scrollbar::-webkit-scrollbar-thumb {
background-color: rgba(0, 0, 0, 0.1);
}
/* ── Modal Animations (0.5s) ── */
@keyframes modalFadeIn {
from {
opacity: 0;
transform: scale(0.95) translateY(10px);
}
to {
opacity: 1;
transform: scale(1) translateY(0);
}
}
@keyframes modalFadeOut {
from {
opacity: 1;
transform: scale(1) translateY(0);
}
to {
opacity: 0;
transform: scale(0.95) translateY(10px);
}
}
@keyframes overlayFadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes overlayFadeOut {
from { opacity: 1; }
to { opacity: 0; }
}
.animate-modal-in {
animation: modalFadeIn 500ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.animate-modal-out {
animation: modalFadeOut 500ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.animate-overlay-in {
animation: overlayFadeIn 500ms ease-out forwards;
}
.animate-overlay-out {
animation: overlayFadeOut 500ms ease-in forwards;
}
/* Hide native Edge/IE password reveal icon (the second eye) */
input::-ms-reveal,
input::-ms-clear {
display: none;
}
/* Accordion Animation Fix */
.accordion-grid {
display: grid;
grid-template-rows: 0fr;
transition: grid-template-rows 1s ease-in-out, margin-top 1s ease-in-out, opacity 1s ease-in-out;
opacity: 0;
margin-top: 0;
}
.accordion-grid.expanded {
grid-template-rows: 1fr;
opacity: 1;
margin-top: 0.375rem;
}
.accordion-inner {
overflow: hidden;
min-height: 0;
}