poumind / frontend /static /css /style.css
yjkim7825's picture
Initial Spaces deployment: PoUMind FastAPI demo
1917450
Raw
History Blame Contribute Delete
10.7 kB
/* =========================
๊ณตํ†ต ๊ธฐ๋ณธ ์Šคํƒ€์ผ
========================= */
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
overflow-y: scroll;
scrollbar-gutter: stable;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Pretendard", system-ui, sans-serif;
background: #fff8ee;
color: #333333;
}
.page {
min-height: 100vh;
display: flex;
flex-direction: column;
}
/* =========================
ํ—ค๋” ๊ณตํ†ต
========================= */
header {
width: 100%;
border-bottom: 1px solid #e7e2d8;
background: #fffaf3;
}
.header-inner {
max-width: 1120px;
margin: 0 auto;
padding: 18px 20px;
display: flex;
align-items: center;
justify-content: space-between;
}
.logo img {
height: 48px;
display: block;
}
nav {
display: flex;
align-items: center;
gap: 32px;
font-size: 15px;
}
nav a {
text-decoration: none;
color: #777777;
padding-bottom: 4px;
border-bottom: 2px solid transparent;
}
nav a.active {
color: #1d8fdd;
border-bottom-color: #1d8fdd;
}
.profile-circle {
width: 32px;
height: 32px;
border-radius: 50%;
border: 1px solid #dddddd;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 16px;
margin-left: 16px;
background: #ffffff;
}
/* =========================
๋ฉ”์ธ(๊ณตํ†ต), ํ‘ธํ„ฐ
========================= */
main {
flex: 1;
}
footer {
padding: 18px 0 28px;
font-size: 12px;
color: #aaaaaa;
text-align: center;
}
/* =========================
๋ฉ”์ธ ํŽ˜์ด์ง€(index.html)์šฉ
========================= */
.hero {
max-width: 1120px;
margin: 0 auto;
padding: 60px 20px 80px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
}
.hero-title {
font-size: 28px;
font-weight: 700;
margin-bottom: 8px;
}
.hero-subtitle {
font-size: 15px;
color: #777777;
margin-bottom: 40px;
}
/* ๊ทธ๋ฆผ ์นด๋“œ */
.illustration-card {
width: 100%;
max-width: 920px;
background: #ffffff;
border-radius: 28px;
padding: 40px 40px 32px;
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.05);
display: flex;
flex-direction: column;
align-items: center;
gap: 24px;
}
.illustrations {
display: flex;
justify-content: center;
gap: 40px;
flex-wrap: wrap;
}
.illustration-item {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
min-width: 120px;
}
.illustration-item img {
width: 130px;
height: 130px;
object-fit: contain;
}
.illustration-label {
font-size: 14px;
color: #666666;
}
/* CTA ๋ฒ„ํŠผ */
.hero-cta-wrapper {
margin-top: 32px;
display: flex;
justify-content: center;
width: 100%;
}
/* ๋ฒ„ํŠผ ๊ณตํ†ต */
.btn-primary {
border: none;
outline: none;
cursor: pointer;
padding: 16px 40px;
border-radius: 999px;
background: #7dc9f9;
color: #ffffff;
font-weight: 600;
font-size: 16px;
box-shadow: 0 8px 18px rgba(0, 0, 0, 0.09);
display: inline-flex;
align-items: center;
gap: 10px;
transition: all 0.15s ease-out;
text-decoration: none; /* ๋งํฌ์ผ ๋•Œ ๋ฐ‘์ค„ ์ œ๊ฑฐ */
}
.btn-primary:hover {
background: #4fa4e6;
transform: translateY(-1px);
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.12);
}
.btn-arrow {
font-size: 18px;
}
/* =========================
์—…๋กœ๋“œ ํŽ˜์ด์ง€(htp-upload.html)์šฉ
========================= */
.content {
max-width: 960px;
margin: 0 auto;
padding: 40px 20px 60px;
}
.title-box {
text-align: center;
margin-bottom: 32px;
}
.title-box h1 {
font-size: 26px;
font-weight: 700;
margin-bottom: 6px;
}
.title-box p {
font-size: 14px;
color: #777777;
}
/* ๋‹จ๊ณ„ ํ‘œ์‹œ */
.stepper {
display: flex;
justify-content: space-between;
margin-bottom: 32px;
gap: 12px;
flex-wrap: wrap;
}
.step-item {
flex: 1;
min-width: 140px;
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
font-size: 13px;
color: #999999;
}
.step-circle {
width: 32px;
height: 32px;
border-radius: 50%;
border: 2px solid #d9e6f4;
display: flex;
align-items: center;
justify-content: center;
font-size: 13px;
background: #ffffff;
}
.step-item.active .step-circle {
border-color: #1d8fdd;
background: #1d8fdd;
color: #ffffff;
font-weight: 600;
}
.step-item.active span.step-label {
color: #1d8fdd;
font-weight: 600;
}
.step-item.completed .step-circle {
border-color: #7dc9f9;
background: #7dc9f9;
color: #ffffff;
}
/* ์—…๋กœ๋“œ ์นด๋“œ */
.upload-card {
background: #ffffff;
border-radius: 24px;
padding: 28px 24px 24px;
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.05);
display: flex;
flex-direction: column;
gap: 18px;
}
.upload-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.upload-title {
font-size: 18px;
font-weight: 600;
}
.upload-desc {
font-size: 13px;
color: #777777;
margin-top: 4px;
}
.upload-body {
display: flex;
flex-wrap: wrap;
gap: 20px;
align-items: flex-start;
}
.upload-preview {
width: 260px;
height: 200px;
border-radius: 18px;
background: #f5f5f8;
border: 1px dashed #d4d4df;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
font-size: 13px;
color: #999999;
text-align: center;
padding: 12px;
}
.upload-preview img {
width: 100%;
height: 100%;
object-fit: contain;
}
.upload-controls {
flex: 1;
min-width: 220px;
display: flex;
flex-direction: column;
gap: 10px;
font-size: 13px;
color: #555555;
}
.upload-controls input[type="file"] {
font-size: 13px;
}
.upload-tip {
font-size: 12px;
color: #999999;
line-height: 1.4;
}
/* ๋ฒ„ํŠผ ์˜์—ญ */
.actions {
margin-top: 24px;
display: flex;
justify-content: space-between;
gap: 12px;
}
.btn-secondary {
border-radius: 999px;
padding: 12px 22px;
font-size: 14px;
border: 1px solid #d2d2dd;
background: #ffffff;
color: #555555;
cursor: pointer;
display: inline-flex;
align-items: center;
gap: 6px;
transition: background 0.15s ease-out;
}
.btn-secondary:hover {
background: #f3f3f8;
}
/* ๋‹จ๊ณ„๋ณ„ ํ™”๋ฉด ํ‘œ์‹œ */
.upload-step { display: none; }
.upload-step.active { display: block; }
.empty-state-inline {
padding: 48px 24px;
text-align: center;
}
.empty-state-inline p {
font-size: 0.95rem;
color: #888;
line-height: 1.8;
}
.empty-state-inline a {
color: #1d8fdd;
text-decoration: none;
font-weight: 600;
}
.empty-state-inline a:hover {
text-decoration: underline;
}
.loading-overlay {
position: fixed;
inset: 0;
background: rgba(255, 248, 235, 0.88);
backdrop-filter: blur(6px);
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
}
.loading-overlay[hidden] {
display: none;
}
.loading-card {
background: #FFFCF6;
padding: 44px 56px;
border-radius: 20px;
box-shadow: 0 12px 40px rgba(232, 155, 107, 0.15);
text-align: center;
max-width: 460px;
}
.loading-spinner {
width: 50px;
height: 50px;
border: 4px solid #FCEAD9;
border-top-color: #E89B6B;
border-radius: 50%;
animation: spin 1s linear infinite;
margin: 0 auto 20px;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
.loading-title {
font-size: 17px;
font-weight: 600;
margin: 0 0 8px;
color: #5A4A3F;
word-break: keep-all;
line-height: 1.5;
}
.loading-desc {
font-size: 14px;
color: #8B7D6E;
margin: 0;
word-break: keep-all;
}
.htp-img {
pointer-events: none;
}
.drop-area {
border-radius: 18px;
transition: all 0.15s ease;
}
.drop-area.dragover {
background: #f0f8ff;
outline: 2px dashed #7dc9f9;
outline-offset: -6px;
}
/* =========================
๋ฐ˜์‘ํ˜•
========================= */
@media (max-width: 768px) {
.header-inner {
flex-direction: column;
gap: 12px;
align-items: flex-start;
}
.illustration-card {
padding: 30px 20px 24px;
}
.illustrations {
gap: 28px;
}
.illustration-item img {
width: 110px;
height: 110px;
}
.upload-body {
flex-direction: column;
}
.upload-preview {
width: 100%;
}
.actions {
flex-direction: row;
justify-content: space-between;
}
}
/* =========================
๋ฆฌํฌํŠธ ํŽ˜์ด์ง€ (report.html)
========================= */
.report-page {
background: #fff8ee;
}
/* ๋ฆฌํฌํŠธ ์ปจํ…Œ์ด๋„ˆ */
.report-container {
max-width: 1400px;
margin: 40px auto 80px;
background: #ffffff;
border-radius: 28px;
padding: 48px;
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.05);
}
/* ํ—ค๋” */
.report-header {
text-align: center;
margin-bottom: 40px;
}
.report-header h1 {
font-size: 30px;
margin-bottom: 10px;
}
.report-date {
font-size: 13px;
color: #999999;
margin-bottom: 18px;
}
.report-summary {
background: #f0f8ff;
border-radius: 18px;
padding: 22px;
font-size: 16px;
line-height: 1.6;
}
/* ์ง€ํ‘œ ์นด๋“œ */
.metric-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
margin: 40px 0;
}
.metric-card {
background: #ffffff;
border: 1px solid #e6e6e6;
border-radius: 18px;
padding: 18px;
text-align: center;
font-size: 14px;
}
.metric-card strong {
display: block;
font-size: 18px;
margin-top: 6px;
color: #1d8fdd;
}
/* ์„น์…˜ */
.section {
margin-bottom: 36px;
}
.section h2 {
font-size: 22px;
margin-bottom: 12px;
color: #1d8fdd;
}
/* ๋ถ„์„ ์นด๋“œ */
.analysis-card {
background: #fafafa;
border-radius: 18px;
padding: 22px;
line-height: 1.7;
font-size: 15px;
white-space: pre-line;
}
.analysis-card.overall {
background: #f0f8ff;
border: 2px solid #d7eafd;
font-size: 16px;
font-weight: 500;
}
.analysis-inline {
display: flex;
gap: 24px;
}
/* ๋‘ ํฐ์ƒ‰ ๋ฐ•์Šค๋ฅผ ๊ฐ€๋กœ๋กœ ๋„“๊ฒŒ */
.analysis-inline .section {
flex: 1;
}
/* ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ๋‹ค์‹œ ์„ธ๋กœ */
@media (max-width: 768px) {
.analysis-inline {
flex-direction: column;
}
}
/* ๊ฐ€์ด๋“œ */
.guide-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24px;
}
.guide-box {
background: #ffffff;
border: 1px solid #e6e6e6;
border-radius: 18px;
padding: 20px;
}
.guide-box h3 {
margin-bottom: 10px;
font-size: 16px;
}
.guide-box ul {
padding-left: 18px;
line-height: 1.6;
font-size: 14px;
}
/* ๋ฆฌ์†Œ์Šค */
.resource-list {
padding-left: 18px;
line-height: 1.6;
font-size: 14px;
}
/* CTA */
.report-cta {
margin: 60px auto;
display: flex;
justify-content: center;
gap: 16px;
}
/* ๋ฐ˜์‘ํ˜• */
@media (max-width: 768px) {
.metric-grid,
.guide-grid {
grid-template-columns: 1fr;
}
.report-container {
max-width: 2000px;
margin: 40px auto 80px;
background: #ffffff;
border-radius: 28px;
padding: 40px;
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.05);
}
}