웹 프론트 페이지 개발
- React + Vite 구성 - lotto-frontend 구성 - script 설정으로 nas server로 빌드 n 배포 수행
This commit is contained in:
250
src/App.css
Normal file
250
src/App.css
Normal file
@@ -0,0 +1,250 @@
|
||||
:root {
|
||||
--bg: #0b0f17;
|
||||
--card: #121a2a;
|
||||
--card2: #0f1626;
|
||||
--text: #e8edf6;
|
||||
--muted: #a7b2c7;
|
||||
--line: rgba(255,255,255,0.08);
|
||||
--accent: #7dd3fc;
|
||||
--good: #34d399;
|
||||
--warn: #fbbf24;
|
||||
--danger: #fb7185;
|
||||
}
|
||||
|
||||
* { box-sizing: border-box; }
|
||||
html, body { height: 100%; }
|
||||
body {
|
||||
margin: 0;
|
||||
background: radial-gradient(1200px 800px at 20% 0%, rgba(125,211,252,0.13), transparent 60%),
|
||||
radial-gradient(900px 650px at 80% 20%, rgba(52,211,153,0.10), transparent 55%),
|
||||
var(--bg);
|
||||
color: var(--text);
|
||||
font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, "Noto Sans KR", sans-serif;
|
||||
}
|
||||
|
||||
.page { max-width: 1100px; margin: 0 auto; padding: 20px; }
|
||||
|
||||
.topbar {
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
padding: 14px 14px;
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(18,26,42,0.7);
|
||||
border-radius: 16px;
|
||||
backdrop-filter: blur(8px);
|
||||
}
|
||||
|
||||
.brand { display: flex; gap: 12px; align-items: center; }
|
||||
.logo { width: 40px; height: 40px; display: grid; place-items: center; font-size: 22px;
|
||||
background: rgba(125,211,252,0.12); border: 1px solid var(--line); border-radius: 12px;
|
||||
}
|
||||
.title { font-weight: 800; letter-spacing: 0.2px; }
|
||||
.sub { color: var(--muted); font-size: 13px; margin-top: 2px; }
|
||||
|
||||
.topRight { display: flex; gap: 10px; align-items: center; }
|
||||
.latestChip {
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(0,0,0,0.25);
|
||||
padding: 8px 10px;
|
||||
border-radius: 999px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.tabs {
|
||||
margin-top: 12px;
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.tab {
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(18,26,42,0.35);
|
||||
color: var(--text);
|
||||
padding: 10px 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.tab.on {
|
||||
background: rgba(125,211,252,0.14);
|
||||
border-color: rgba(125,211,252,0.35);
|
||||
}
|
||||
|
||||
.main { margin-top: 14px; display: grid; gap: 14px; }
|
||||
|
||||
.card {
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(18,26,42,0.5);
|
||||
border-radius: 18px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.cardHead {
|
||||
display: flex; justify-content: space-between; align-items: flex-start;
|
||||
padding: 14px 14px 10px 14px;
|
||||
border-bottom: 1px solid var(--line);
|
||||
background: rgba(15,22,38,0.35);
|
||||
}
|
||||
.cardTitle { font-size: 15px; font-weight: 800; }
|
||||
.cardSub { color: var(--muted); font-size: 13px; margin-top: 4px; }
|
||||
.cardBody { padding: 14px; }
|
||||
|
||||
.muted { color: var(--muted); }
|
||||
|
||||
.btn {
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 12px;
|
||||
padding: 10px 12px;
|
||||
color: var(--text);
|
||||
cursor: pointer;
|
||||
background: rgba(125,211,252,0.12);
|
||||
}
|
||||
.btn.secondary { background: rgba(255,255,255,0.06); }
|
||||
.btn.ghost { background: transparent; }
|
||||
.btn:disabled { opacity: 0.5; cursor: not-allowed; }
|
||||
|
||||
.input, .select {
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(0,0,0,0.25);
|
||||
color: var(--text);
|
||||
border-radius: 12px;
|
||||
padding: 10px 10px;
|
||||
min-width: 120px;
|
||||
}
|
||||
|
||||
.textarea {
|
||||
width: 100%;
|
||||
min-height: 64px;
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(0,0,0,0.25);
|
||||
color: var(--text);
|
||||
border-radius: 12px;
|
||||
padding: 10px;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
.params { display: grid; gap: 10px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
|
||||
.paramLabel { color: var(--muted); font-size: 12px; margin-bottom: 6px; }
|
||||
.param { display: flex; flex-direction: column; }
|
||||
|
||||
.rowInline { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
|
||||
.chip {
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(255,255,255,0.05);
|
||||
color: var(--text);
|
||||
border-radius: 999px;
|
||||
padding: 8px 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.chip.on { border-color: rgba(251,191,36,0.5); background: rgba(251,191,36,0.12); }
|
||||
|
||||
.pillRow { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
|
||||
.pill {
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(255,255,255,0.06);
|
||||
border-radius: 999px;
|
||||
padding: 6px 10px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.pill.ok { border-color: rgba(52,211,153,0.45); background: rgba(52,211,153,0.12); }
|
||||
.pill.warn { border-color: rgba(251,191,36,0.45); background: rgba(251,191,36,0.12); }
|
||||
|
||||
.bigNums {
|
||||
font-size: 26px;
|
||||
font-weight: 900;
|
||||
letter-spacing: 1px;
|
||||
padding: 12px 14px;
|
||||
border: 1px dashed rgba(125,211,252,0.25);
|
||||
border-radius: 16px;
|
||||
background: rgba(0,0,0,0.20);
|
||||
}
|
||||
|
||||
.details { margin-top: 12px; }
|
||||
.pre {
|
||||
white-space: pre-wrap;
|
||||
word-break: break-word;
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(0,0,0,0.25);
|
||||
padding: 10px;
|
||||
border-radius: 12px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.empty {
|
||||
color: var(--muted);
|
||||
padding: 16px;
|
||||
border: 1px dashed rgba(255,255,255,0.12);
|
||||
border-radius: 14px;
|
||||
background: rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.batchGrid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 10px;
|
||||
}
|
||||
.batchItem {
|
||||
text-align: left;
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(0,0,0,0.22);
|
||||
border-radius: 16px;
|
||||
padding: 12px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.batchItem.on {
|
||||
border-color: rgba(52,211,153,0.55);
|
||||
background: rgba(52,211,153,0.10);
|
||||
}
|
||||
.batchIdx { color: var(--muted); font-size: 12px; }
|
||||
.batchNums { font-weight: 900; font-size: 18px; margin-top: 8px; }
|
||||
.batchHint { color: var(--muted); font-size: 12px; margin-top: 6px; }
|
||||
|
||||
.pager { display: flex; gap: 10px; align-items: center; margin-bottom: 10px; }
|
||||
.pagerText { color: var(--muted); }
|
||||
|
||||
.historyList { display: grid; gap: 10px; }
|
||||
|
||||
.row {
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(0,0,0,0.18);
|
||||
border-radius: 16px;
|
||||
padding: 12px;
|
||||
}
|
||||
.rowTop { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
|
||||
.rowMeta { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
|
||||
.rowId { font-weight: 900; }
|
||||
.rowDate, .rowBased { color: var(--muted); font-size: 12px; }
|
||||
|
||||
.rowActions { display: flex; gap: 8px; }
|
||||
.iconBtn {
|
||||
border: 1px solid var(--line);
|
||||
background: rgba(255,255,255,0.06);
|
||||
color: var(--text);
|
||||
border-radius: 12px;
|
||||
padding: 8px 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.iconBtn.on { border-color: rgba(251,191,36,0.6); background: rgba(251,191,36,0.14); }
|
||||
.iconBtn.danger { border-color: rgba(251,113,133,0.45); background: rgba(251,113,133,0.12); }
|
||||
|
||||
.rowNums { font-size: 18px; font-weight: 900; margin-top: 10px; }
|
||||
|
||||
.tags { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; }
|
||||
.tag {
|
||||
border: 1px solid rgba(125,211,252,0.25);
|
||||
background: rgba(125,211,252,0.10);
|
||||
border-radius: 999px;
|
||||
padding: 5px 9px;
|
||||
font-size: 12px;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.rowEdit {
|
||||
margin-top: 10px;
|
||||
display: grid;
|
||||
grid-template-columns: 2fr 2fr 1fr;
|
||||
gap: 10px;
|
||||
align-items: end;
|
||||
}
|
||||
.editLabel { color: var(--muted); font-size: 12px; margin-bottom: 6px; }
|
||||
.editButtons { display: flex; justify-content: flex-end; }
|
||||
|
||||
.tips { margin: 0; padding-left: 18px; color: var(--muted); }
|
||||
.footer { margin-top: 14px; display: flex; justify-content: center; }
|
||||
Reference in New Issue
Block a user