snygginghani's picture
Deploy Ammani dialect detector + sentiment (GATE-AraBert-v1)
7a22995 verified
Raw
History Blame Contribute Delete
8.07 kB
/* ── Variables ─────────────────────────────────────────────────────────────── */
:root {
--clr-bg: #0d1117;
--clr-surface: #161b22;
--clr-border: #30363d;
--clr-text: #e6edf3;
--clr-muted: #8b949e;
--clr-accent: #58a6ff;
--clr-green: #3fb950;
--clr-red: #f85149;
--radius: 12px;
--transition: 0.25s ease;
}
/* ── Base ──────────────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
body {
font-family: 'Noto Sans Arabic', 'Segoe UI', Tahoma, sans-serif;
background: var(--clr-bg);
color: var(--clr-text);
min-height: 100vh;
}
/* ── Header ────────────────────────────────────────────────────────────────── */
.site-header {
background: linear-gradient(180deg, #161b22 0%, #0d1117 100%);
border-bottom: 1px solid var(--clr-border);
}
.header-icon { font-size: 3rem; line-height: 1; }
.site-header h1 {
font-size: clamp(1.6rem, 4vw, 2.4rem);
letter-spacing: -0.5px;
}
.subtitle { color: var(--clr-muted); font-size: 1rem; }
/* ── Cards ─────────────────────────────────────────────────────────────────── */
.glass-card {
background: var(--clr-surface);
border: 1px solid var(--clr-border) !important;
border-radius: var(--radius) !important;
box-shadow: 0 4px 24px rgba(0,0,0,0.4);
}
/* ── Textarea ──────────────────────────────────────────────────────────────── */
.arabic-textarea {
font-family: 'Noto Sans Arabic', sans-serif;
font-size: 1.05rem;
line-height: 1.8;
background: var(--clr-bg);
border: 1px solid var(--clr-border);
border-radius: 8px;
color: var(--clr-text);
resize: vertical;
direction: rtl;
text-align: right;
transition: border-color var(--transition), box-shadow var(--transition);
}
.arabic-textarea:focus {
background: #1c2333;
border-color: var(--clr-accent);
box-shadow: 0 0 0 3px rgba(88,166,255,0.15);
color: var(--clr-text);
outline: none;
}
.arabic-textarea::placeholder { color: var(--clr-muted); }
/* ── Analyse button ────────────────────────────────────────────────────────── */
.btn-analyze {
background: #238636;
border: 1px solid #2ea043;
color: #fff;
font-family: 'Noto Sans Arabic', sans-serif;
font-weight: 600;
font-size: 1rem;
border-radius: 8px;
transition: background var(--transition), border-color var(--transition);
}
.btn-analyze:hover { background: #2ea043; border-color: #3fb950; color: #fff; }
.btn-analyze:active { background: #1a6727; }
.btn-analyze:disabled { background: #1c2733; border-color: var(--clr-border); color: var(--clr-muted); }
/* ── Hint ──────────────────────────────────────────────────────────────────── */
.hint { font-size: 0.78rem; color: var(--clr-muted); }
kbd {
background: #21262d;
border: 1px solid var(--clr-border);
border-radius: 4px;
padding: 1px 5px;
font-size: 0.75rem;
color: var(--clr-muted);
}
/* ── Result badge ──────────────────────────────────────────────────────────── */
.result-badge {
width: 84px; height: 84px;
border-radius: 50%;
display: flex; align-items: center; justify-content: center;
font-size: 2.6rem;
font-weight: 700;
transition: transform 0.3s cubic-bezier(.34,1.56,.64,1);
}
.badge-yes {
background: rgba(63,185,80,0.12);
border: 3px solid var(--clr-green);
color: var(--clr-green);
}
.badge-no {
background: rgba(248,81,73,0.12);
border: 3px solid var(--clr-red);
color: var(--clr-red);
}
.result-badge:not(:empty) { transform: scale(1.08); }
/* ── Confidence bar ────────────────────────────────────────────────────────── */
.conf-progress {
height: 22px;
border-radius: 11px;
background: #21262d;
overflow: hidden;
}
.conf-progress .progress-bar {
border-radius: 11px;
transition: width 0.9s cubic-bezier(.4,0,.2,1);
font-size: 0.8rem;
font-weight: 600;
}
/* ── Raw score pill ────────────────────────────────────────────────────────── */
.score-pill {
display: inline-block;
background: #21262d;
border: 1px solid var(--clr-border);
border-radius: 20px;
padding: 4px 16px;
font-size: 0.82rem;
color: var(--clr-muted);
}
/* ── Sentiment ─────────────────────────────────────────────────────────────── */
.sentiment-box {
border-top: 1px solid var(--clr-border);
padding-top: 1rem;
}
.sentiment-label {
font-size: 0.85rem;
color: var(--clr-muted);
text-transform: uppercase;
letter-spacing: 0.05em;
}
.sentiment-chip {
display: inline-block;
font-size: 1.15rem;
font-weight: 600;
padding: 6px 22px;
border-radius: 22px;
border: 2px solid var(--clr-border);
}
.sent-pos { background: rgba(63,185,80,0.12); border-color: var(--clr-green); color: var(--clr-green); }
.sent-neu { background: rgba(88,166,255,0.12); border-color: var(--clr-accent); color: var(--clr-accent); }
.sent-neg { background: rgba(248,81,73,0.12); border-color: var(--clr-red); color: var(--clr-red); }
.sentiment-conf { font-size: 0.8rem; color: var(--clr-muted); }
/* ── Section title ─────────────────────────────────────────────────────────── */
.section-title {
font-size: 1rem;
font-weight: 600;
color: var(--clr-muted);
text-transform: uppercase;
letter-spacing: 0.05em;
}
/* ── Neighbour cards ───────────────────────────────────────────────────────── */
.nbr-card {
background: var(--clr-surface);
border: 1px solid var(--clr-border) !important;
border-radius: var(--radius) !important;
transition: border-color var(--transition), box-shadow var(--transition);
}
.nbr-card:hover {
border-color: var(--clr-accent) !important;
box-shadow: 0 0 0 2px rgba(88,166,255,0.12);
}
.nbr-rank {
font-size: 0.75rem;
font-weight: 700;
color: var(--clr-muted);
background: #21262d;
border: 1px solid var(--clr-border);
border-radius: 4px;
padding: 1px 8px;
}
.sim-badge {
font-size: 0.78rem;
color: var(--clr-accent);
font-weight: 600;
}
.nbr-text {
font-family: 'Noto Sans Arabic', sans-serif;
font-size: 0.97rem;
color: #c9d1d9;
line-height: 1.7;
direction: rtl;
text-align: right;
}
/* ── Scrollbar ─────────────────────────────────────────────────────────────── */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: var(--clr-bg); }
::-webkit-scrollbar-thumb { background: var(--clr-border); border-radius: 3px; }