Files
uas-poverty-mapping/src/pages/MapPage.css
T
2026-06-05 15:09:45 +07:00

275 lines
9.2 KiB
CSS

/* ── MAP PAGE ─────────────────────────────────────────────── */
#map { width: 100%; height: 100vh; }
#map.mode-add-ri { cursor: crosshair; }
#map.mode-add-rm { cursor: cell; }
/* ── TOP LEFT PANEL ── */
.app-hd { padding: 14px 15px 11px; border-bottom: 1px solid var(--sep); }
.app-title { font-size: 17px; font-weight: 700; letter-spacing: -.4px; color: var(--txt-1); }
.app-sub { font-size: 11px; color: var(--txt-2); margin-top: 2px; line-height: 1.35; }
.mode-badge {
display: inline-flex; align-items: center; gap: 5px;
padding: 2px 9px 2px 5px; border-radius: 20px;
font-size: 10.5px; font-weight: 600; margin-top: 6px;
}
.mb-sel { background: rgba(120,120,128,.13); color: var(--txt-2); }
.mb-ri { background: rgba(28,138,95,.13); color: #1a7a3a; }
.mb-rm { background: rgba(200,75,15,.11); color: #a83a08; }
.bd { width: 6px; height: 6px; border-radius: 50%; }
.bd-sel { background: #8e8e93; }
.bd-ri { background: #34c759; }
.bd-rm { background: #ff3b30; }
.mode-list { padding: 8px 8px 10px; display: flex; flex-direction: column; gap: 3px; }
.mode-sec { font-size: 10px; font-weight: 600; letter-spacing: .5px; text-transform: uppercase; color: var(--txt-3); padding: 2px 6px 5px; }
.mode-btn {
display: flex; align-items: center; gap: 10px;
padding: 8px 10px; border-radius: var(--r-md);
border: none; background: transparent; cursor: pointer;
font-family: var(--sys); font-size: 13.5px; font-weight: 500; color: var(--txt-1);
transition: background .14s; text-align: left; width: 100%;
}
.mode-btn:hover { background: var(--fill-1); }
.mode-btn.active { background: var(--fill-1); }
.mode-btn.active.ri-btn { background: rgba(52,199,89,.14); color: #1a7a3a; }
.mode-btn.active.rm-btn { background: rgba(200,75,15,.10); color: #a83a08; }
.mico {
width: 30px; height: 30px; border-radius: 8px;
display: flex; align-items: center; justify-content: center;
font-size: 16px; flex-shrink: 0; background: var(--fill-1);
}
.mode-btn.active.ri-btn .mico { background: rgba(52,199,89,.18); }
.mode-btn.active.rm-btn .mico { background: rgba(200,75,15,.13); }
.mode-hint { padding: 8px 14px 11px; border-top: 1px solid var(--sep); font-size: 10.5px; color: var(--txt-3); line-height: 1.5; }
/* ── STATS PANEL ── */
.pnl-hd {
padding: 10px 14px 8px; border-bottom: 1px solid var(--sep);
font-size: 11px; font-weight: 600; text-transform: uppercase;
letter-spacing: .5px; color: var(--txt-2);
}
.stats-grid { display: grid; grid-template-columns: 1fr 1fr; }
.sc { padding: 11px 14px; position: relative; }
.sc::after {
content: ''; position: absolute; right: 0; top: 22%; bottom: 22%;
width: .5px; background: var(--sep);
}
.sc.no-divider::after { display: none; }
.sc:nth-child(1), .sc:nth-child(2) { border-bottom: 1px solid var(--sep); }
.sn {
font-size: 28px; font-weight: 700; letter-spacing: -1.2px; line-height: 1;
color: var(--txt-1); font-variant-numeric: tabular-nums;
}
.sn.grn { color: #1d9e3e; }
.sn.org { color: #b96300; }
.sl { font-size: 10.5px; font-weight: 500; color: var(--txt-2); margin-top: 3px; line-height: 1.25; }
/* ── LEGEND PANEL ── */
.leg-hd {
padding: 10px 13px 9px; border-bottom: 1px solid var(--sep);
display: flex; align-items: center; justify-content: space-between;
cursor: pointer; user-select: none;
}
.leg-title { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .5px; color: var(--txt-2); }
.leg-chev { font-size: 10px; color: var(--txt-3); transition: transform .2s; }
.leg-chev.up { transform: rotate(180deg); }
.leg-body-wrap { overflow: hidden; max-height: 300px; transition: max-height .24s ease; }
.leg-body-wrap.closed { max-height: 0 !important; }
.leg-sec { padding: 8px 13px 7px; }
.leg-sec-lbl {
font-size: 9.5px; font-weight: 600; text-transform: uppercase;
letter-spacing: .5px; color: var(--txt-3); margin-bottom: 7px;
}
.leg-row { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; font-size: 12px; color: var(--txt-1); }
.ld { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.ls { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; }
.leg-sep { height: .5px; background: var(--sep); margin: 0 13px 1px; }
/* ── ROLE INDICATOR ──────────────────────────────────────────────────────── */
.app-title-row {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 8px;
}
.logout-btn {
flex-shrink: 0;
width: 28px; height: 28px;
background: rgba(120,120,128,.1);
border: none;
border-radius: 8px;
color: var(--txt-3);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: background .15s, color .15s;
margin-top: 2px;
}
.logout-btn:hover {
background: rgba(200,75,15,.12);
color: #c84b0f;
}
.role-indicator {
display: inline-flex;
align-items: center;
gap: 5px;
font-size: 11px;
font-weight: 600;
padding: 3px 9px;
border-radius: 20px;
margin-top: 6px;
letter-spacing: .02em;
}
.role-indicator[data-role="pengurus"] {
background: rgba(200,75,15,.1);
color: #c84b0f;
}
.role-indicator[data-role="pengguna"] {
background: rgba(28,138,95,.1);
color: #1c8a5f;
}
/* ── POPUP READ-ONLY RANGE ───────────────────────────────────────────────── */
.pu-range-ro {
padding: 8px 14px;
border-top: 1px solid rgba(120,120,128,.12);
}
/* ── POPUP BANTUAN / HISTORY BUTTONS ────────────────────────────────────── */
.pu-btn.pu-history {
background: rgba(37,99,235,.08);
color: #2563eb;
border-color: rgba(37,99,235,.2);
}
.pu-btn.pu-history:hover { background: rgba(37,99,235,.15); }
.pu-btn.pu-bantuan {
background: rgba(28,138,95,.08);
color: #1c8a5f;
border-color: rgba(28,138,95,.2);
}
.pu-btn.pu-bantuan:hover { background: rgba(28,138,95,.15); }
/* ── MODE BANTUAN BUTTON ─────────────────────────────────────────────────── */
.mode-btn.bantuan-btn { color: #1c8a5f; }
.mode-btn.bantuan-btn:hover, .mode-btn.bantuan-btn.active {
background: rgba(28,138,95,.12);
color: #1c8a5f;
}
/* ── BANTUAN MODAL STYLES ────────────────────────────────────────────────── */
.bantuan-desc-chip {
display: flex;
align-items: center;
gap: 6px;
font-size: 12px;
padding: 7px 10px;
background: rgba(120,120,128,.07);
border-radius: 8px;
margin: 4px 0 8px;
color: var(--txt-2);
}
.bantuan-cat-dot {
width: 8px; height: 8px;
border-radius: 50%;
flex-shrink: 0;
}
.bantuan-type-list {
display: flex;
flex-direction: column;
gap: 6px;
}
.bantuan-type-item {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 10px;
border-radius: 8px;
background: rgba(120,120,128,.05);
transition: background .15s;
}
.bantuan-type-item:hover { background: rgba(120,120,128,.1); }
.bantuan-type-info { flex: 1; min-width: 0; }
.bantuan-type-nama { font-size: 13px; font-weight: 600; color: var(--txt-1); }
.bantuan-type-meta { display: flex; align-items: center; gap: 6px; margin-top: 2px; }
.bantuan-type-desc { font-size: 11px; color: var(--txt-3); }
.bantuan-del-btn {
flex-shrink: 0;
width: 26px; height: 26px;
background: none;
border: none;
border-radius: 6px;
color: var(--txt-3);
cursor: pointer;
display: flex; align-items: center; justify-content: center;
transition: background .15s, color .15s;
}
.bantuan-del-btn:hover { background: rgba(200,75,15,.1); color: #c84b0f; }
/* ── HISTORY LIST ────────────────────────────────────────────────────────── */
.history-empty {
padding: 32px 16px;
text-align: center;
color: var(--txt-3);
font-size: 13px;
line-height: 1.6;
}
.history-list {
padding: 8px 4px;
display: flex;
flex-direction: column;
}
.history-item {
display: flex;
gap: 12px;
padding: 8px 4px;
}
.history-item-left {
display: flex;
flex-direction: column;
align-items: center;
gap: 0;
flex-shrink: 0;
width: 14px;
padding-top: 4px;
}
.history-dot {
width: 12px; height: 12px;
border-radius: 50%;
flex-shrink: 0;
box-shadow: 0 0 0 3px rgba(255,255,255,.6);
}
.history-line {
width: 2px;
flex: 1;
min-height: 16px;
background: rgba(120,120,128,.2);
margin-top: 4px;
}
.history-item-body {
flex: 1;
min-width: 0;
padding-bottom: 12px;
}
.history-nama { font-size: 13px; font-weight: 600; color: var(--txt-1); }
.history-meta { display: flex; align-items: center; gap: 8px; margin-top: 4px; }
.history-cat {
display: inline-block;
font-size: 10px; font-weight: 600;
padding: 2px 7px;
border-radius: 20px;
letter-spacing: .04em;
}
.history-date { font-size: 11px; color: var(--txt-3); }
.history-catatan { font-size: 12px; color: var(--txt-2); margin-top: 4px; }
.history-by { font-size: 11px; color: var(--txt-3); margin-top: 2px; font-style: italic; }