:root { --bs-blue: #0f172a; --bs-green: #10b981; --bs-primary: #0f172a; --bs-secondary: #64748b; --bs-success: #10b981; --bs-info: #0ea5e9; --bs-warning: #f59e0b; --bs-danger: #ef4444; --bs-body-bg: #f8fafc; --bs-body-color: #334155; --bs-font-sans-serif: 'Inter', system-ui, -apple-system, sans-serif; --bs-body-font-family: var(--bs-font-sans-serif); --bs-border-radius: 0.5rem; --bs-border-radius-sm: 0.375rem; --bs-border-radius-lg: 0.75rem; /* Design system tokens */ --accent: #0d9488; --accent-hover: #0f766e; --accent-light: #f0fdfa; --accent-border: #99f6e4; --profit: #059669; --profit-bg: #ecfdf5; --loss: #dc2626; --loss-bg: #fef2f2; --surface: #ffffff; --surface-raised: #ffffff; --surface-muted: #f8fafc; --border: #e2e8f0; --border-light: #f1f5f9; --text-primary: #0f172a; --text-secondary: #64748b; --text-muted: #94a3b8; --radius-card: 1rem; --radius-pill: 2rem; --shadow-card: 0 1px 3px rgba(0,0,0,0.08), 0 8px 24px rgba(0,0,0,0.04); --shadow-card-hover: 0 4px 12px rgba(0,0,0,0.1), 0 12px 32px rgba(0,0,0,0.06); } body { font-feature-settings: "cv11", "ss01"; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; overscroll-behavior-y: none; font-size: 0.95rem; } .bg-navy { background-color: var(--bs-primary) !important; } .text-navy { color: var(--bs-primary) !important; } /* Utility classes */ .text-profit { color: var(--profit) !important; } .text-loss { color: var(--loss) !important; } .text-accent { color: var(--accent) !important; } .text-muted-custom { color: var(--text-muted) !important; } .bg-accent-light { background-color: var(--accent-light) !important; } .bg-profit-light { background-color: var(--profit-bg) !important; } .bg-loss-light { background-color: var(--loss-bg) !important; } .bg-surface { background-color: var(--surface) !important; } .border-accent { border-color: var(--accent-border) !important; } .card { border: none; border-radius: var(--radius-card); box-shadow: var(--shadow-card); transition: box-shadow 0.2s ease, transform 0.2s ease; } .form-control, .form-select { border-color: #cbd5e1; padding: 0.75rem 1rem; font-weight: 500; } .form-control:focus, .form-select:focus { border-color: var(--accent); box-shadow: 0 0 0 0.25rem rgba(13, 148, 136, 0.15); } .btn-primary { background-color: var(--bs-primary); border-color: var(--bs-primary); padding: 0.75rem 1.5rem; font-weight: 600; } .navbar { background-color: var(--surface) !important; border-bottom: 1px solid var(--border); padding-top: 1rem; padding-bottom: 1rem; } .navbar-brand { font-weight: 700; letter-spacing: -0.025em; color: var(--text-primary) !important; font-size: 1.2rem; } .navbar-brand:hover { color: var(--accent) !important; } /* ======================================== Query Box - Natural Language Search ======================================== */ .query-box { background: var(--surface); border: none; border-radius: var(--radius-card); padding: 2rem 2.5rem; box-shadow: var(--shadow-card); text-align: center; transition: box-shadow 0.3s ease, transform 0.2s ease; } .query-box:focus-within { box-shadow: var(--shadow-card-hover); transform: translateY(-2px); } .query-line { font-size: 1.75rem; line-height: 2.8; color: #64748b; font-weight: 400; } .query-word { margin: 0 0.15em; } .query-select, .query-input { font-family: inherit; font-size: inherit; font-weight: 600; color: var(--bs-primary); background: transparent; border: none; border-bottom: 2px dashed #cbd5e1; padding: 0 0.1em; margin: 0 0.1em; outline: none; transition: border-color 0.2s ease, background-color 0.2s ease; cursor: pointer; } .query-select { appearance: none; -webkit-appearance: none; background-image: none; } .query-select:focus, .query-input:focus { border-bottom-style: solid; border-bottom-color: var(--accent); background-color: rgba(13, 148, 136, 0.04); } .query-input { min-width: 4ch; width: 5.5ch; text-align: center; } .query-select-asset { min-width: 6ch; } .query-amount { white-space: nowrap; } .query-btn { display: inline-block; margin-top: 1.5rem; padding: 1rem 2.5rem; font-size: 1.1rem; font-weight: 600; color: #ffffff; background: var(--accent); border: none; border-radius: var(--radius-pill); cursor: pointer; transition: transform 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease; box-shadow: 0 4px 6px -1px rgba(13, 148, 136, 0.3); } .query-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 12px -1px rgba(13, 148, 136, 0.35); background: var(--accent-hover); } .query-btn:active { transform: translateY(0); } /* Example Queries */ .example-queries { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; } .example-query { display: inline-block; padding: 0.5rem 0; font-size: 0.95rem; color: var(--text-secondary); text-decoration: none; transition: color 0.2s ease; } .example-query::before { content: '\201C'; } .example-query::after { content: '\201D'; } .example-query:hover { color: var(--bs-primary); } /* ======================================== Homepage Tagline ======================================== */ .home-tagline { font-size: 1rem; color: var(--text-secondary); font-weight: 400; max-width: 420px; margin: 0 auto; line-height: 1.5; } /* ======================================== Editorial Hero (two-column desktop) ======================================== */ .hero-editorial { display: grid; grid-template-columns: 1fr 1.5fr; gap: 3rem; align-items: center; min-height: 420px; padding: 1rem 0 0; } .hero-left { display: flex; flex-direction: column; gap: 0; } .hero-headline { font-size: 2.75rem; font-weight: 800; line-height: 1.15; letter-spacing: -0.035em; color: var(--text-primary); margin: 0 0 1rem; } .hero-headline-accent { color: var(--accent); } .hero-desc { font-size: 1.05rem; color: var(--text-secondary); line-height: 1.6; margin: 0 0 1.75rem; max-width: 380px; } .hero-proof { display: flex; flex-direction: column; gap: 0.375rem; } .hero-proof-label { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); } .hero-right { display: flex; align-items: center; justify-content: center; } .hero-right form { width: 100%; } /* ---- Mobile hero header ---- */ .hero-mobile-header { text-align: center; margin-bottom: 1.25rem; padding-top: 0.25rem; } .hero-headline-mobile { font-size: 1.5rem; font-weight: 800; line-height: 1.2; letter-spacing: -0.03em; color: var(--text-primary); margin: 0 0 0.75rem; } .hero-proof-mobile { display: flex; flex-direction: column; align-items: center; gap: 0.375rem; } .hero-proof-mobile .showcase-rotator { width: 100%; height: 3.5rem; } /* ======================================== Showcase Rotator (hero stats) ======================================== */ .showcase-rotator { position: relative; height: 3.75rem; overflow: hidden; } .showcase-item { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 0.25rem; opacity: 0; transform: translateY(16px); pointer-events: none; text-decoration: none; color: inherit; transition: opacity 0.45s ease, transform 0.45s ease; } /* Center showcase items inside mobile hero */ .hero-proof-mobile .showcase-item, .hero-mobile-header .showcase-item { align-items: center; } .showcase-item.active { opacity: 1; transform: translateY(0); pointer-events: auto; } .showcase-item.exit { opacity: 0; transform: translateY(-16px); pointer-events: none; } .showcase-item:hover { text-decoration: none; color: inherit; } .showcase-context { font-size: 0.85rem; color: var(--text-muted); font-weight: 400; } .showcase-result { display: inline-flex; align-items: center; gap: 0.625rem; } .showcase-value { font-size: 1.35rem; font-weight: 700; color: var(--text-primary); letter-spacing: -0.02em; } .showcase-change { font-size: 0.85rem; font-weight: 600; padding: 0.15rem 0.5rem; border-radius: var(--radius-pill); } .showcase-change.profit { color: var(--profit); background: var(--profit-bg); } .showcase-change.loss { color: var(--loss); background: var(--loss-bg); } /* ======================================== Mobile Form (visible only on mobile) ======================================== */ .mobile-form { display: none; } .mobile-form-card { background: var(--surface); border: none; border-radius: var(--radius-card); padding: 1.5rem; box-shadow: var(--shadow-card); } /* Period pills */ .period-pills { display: flex; gap: 0.5rem; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; padding-bottom: 0.25rem; } .period-pills::-webkit-scrollbar { display: none; } .period-pill { flex-shrink: 0; padding: 0.5rem 1rem; font-size: 0.85rem; font-weight: 600; color: var(--text-secondary); background: var(--surface-muted); border: 1.5px solid var(--border); border-radius: var(--radius-pill); cursor: pointer; transition: all 0.15s ease; white-space: nowrap; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; } .period-pill:hover { border-color: var(--accent-border); background: var(--accent-light); } .period-pill.active { color: var(--accent); background: var(--accent-light); border-color: var(--accent); } /* Mobile amount input */ .mobile-amount-group { position: relative; display: flex; align-items: center; } .mobile-amount-input { width: 100%; padding: 0.875rem 3.5rem 0.875rem 1rem; font-size: 1.125rem; font-weight: 600; color: var(--text-primary); background: var(--surface-muted); border: 1.5px solid var(--border); border-radius: 0.75rem; outline: none; transition: border-color 0.2s ease, box-shadow 0.2s ease; min-height: 52px; } .mobile-amount-input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(13, 148, 136, 0.1); } .mobile-amount-input::placeholder { color: var(--text-muted); font-weight: 400; } .mobile-amount-suffix { position: absolute; right: 1rem; color: var(--text-muted); font-weight: 600; font-size: 1rem; pointer-events: none; } /* Mobile asset button */ .mobile-asset-btn { width: 100%; padding: 0.875rem 1rem; font-size: 1rem; font-weight: 500; color: var(--text-secondary); background: var(--surface-muted); border: 1.5px solid var(--border); border-radius: 0.75rem; cursor: pointer; transition: border-color 0.2s ease; display: flex; align-items: center; justify-content: space-between; min-height: 52px; text-align: left; } .mobile-asset-btn.has-value { color: var(--text-primary); font-weight: 600; } .mobile-asset-btn:hover, .mobile-asset-btn:focus { border-color: var(--accent); outline: none; } .mobile-asset-btn i { color: var(--text-muted); font-size: 1.1rem; } /* Mobile CTA */ .mobile-cta { width: 100%; padding: 0.875rem 1.5rem; font-size: 1.05rem; font-weight: 600; color: #ffffff; background: var(--accent); border: none; border-radius: 0.75rem; cursor: pointer; transition: background-color 0.15s ease, transform 0.1s ease, box-shadow 0.15s ease; box-shadow: 0 4px 12px rgba(13, 148, 136, 0.25); min-height: 52px; } .mobile-cta:hover { background: var(--accent-hover); } .mobile-cta:active { transform: scale(0.98); } /* Form field label */ .mobile-form-label { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-muted); margin-bottom: 0.5rem; } /* Mobile form asset picker override */ .mobile-form .asset-picker-wrapper { display: block; width: 100%; } .mobile-form .asset-picker-trigger { width: 100%; padding: 0.875rem 1rem; font-size: 1rem; font-weight: 500; color: var(--text-secondary); background: var(--surface-muted); border: 1.5px solid var(--border); border-bottom: 1.5px solid var(--border); border-radius: 0.75rem; cursor: pointer; transition: border-color 0.2s ease; display: flex; align-items: center; justify-content: space-between; min-height: 52px; text-align: left; } .mobile-form .asset-picker-trigger.has-value { color: var(--text-primary); font-weight: 600; } .mobile-form .asset-picker-trigger:hover, .mobile-form .asset-picker-trigger:focus { border-color: var(--accent); outline: none; } /* ======================================== Popular Calculations Cards ======================================== */ .popular-section-label { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-muted); margin-bottom: 0.75rem; } /* Desktop grid */ .popular-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.75rem; max-width: 680px; margin: 0 auto; } .popular-cards { gap: 0.75rem; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; padding-bottom: 0.5rem; } .popular-cards::-webkit-scrollbar { display: none; } .popular-card { flex-shrink: 0; padding: 1rem 1.125rem; background: var(--surface); border: none; border-radius: 0.875rem; box-shadow: var(--shadow-card); text-decoration: none; color: inherit; transition: box-shadow 0.2s ease, transform 0.15s ease; display: flex; flex-direction: column; gap: 0.5rem; } .popular-card:hover { box-shadow: var(--shadow-card-hover); transform: translateY(-2px); color: inherit; text-decoration: none; } /* Rich card layout */ .popular-card-rich { width: auto; text-align: left; gap: 0.625rem; } .popular-card-top { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; } .popular-card-bottom { display: flex; align-items: baseline; justify-content: space-between; gap: 0.5rem; } .popular-card-asset { font-size: 0.85rem; font-weight: 600; color: var(--text-primary); } .popular-card-badge { font-size: 0.75rem; font-weight: 700; padding: 0.125rem 0.5rem; border-radius: var(--radius-pill); } .popular-card-badge.profit { color: var(--profit); background: var(--profit-bg); } .popular-card-badge.loss { color: var(--loss); background: var(--loss-bg); } .popular-card-detail { font-size: 0.75rem; color: var(--text-muted); } .popular-card-result { font-size: 0.95rem; font-weight: 700; } .popular-card-result.profit { color: var(--profit); } .popular-card-result.loss { color: var(--loss); } .popular-card-change { font-size: 0.8rem; font-weight: 600; } .popular-card-change.profit { color: var(--profit); } .popular-card-change.loss { color: var(--loss); } /* Mobile: scrollable cards */ .popular-cards .popular-card-rich { width: 220px; } /* Hide number input spinners */ input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; } input[type=number] { -moz-appearance: textfield; } /* Responsive */ @media (max-width: 768px) { :root { --bs-body-color: #1e293b; --bs-secondary: #475569; --text-secondary: #475569; --text-muted: #64748b; } body { color: var(--bs-body-color); } .site-footer { padding-top: 2rem; } .query-line, .asset-type-btn, .asset-item-code, .result-recalc-form, .result-date-badge { color: var(--text-secondary); } /* Reduce main container vertical padding on mobile */ main.py-5 { padding-top: 1rem !important; padding-bottom: 2rem !important; } /* Show mobile form, hide desktop form */ .mobile-form { display: block; } .popular-cards.mobile-form { display: flex; } .desktop-form { display: none; } .popular-grid.desktop-form { display: none; } /* Tighten heading spacing */ .hero-mobile-header { margin-top: 0 !important; margin-bottom: 1.15rem !important; padding-inline: 0.25rem; } .mobile-form-card { padding: 1.1rem; } /* Showcase rotator mobile */ .showcase-rotator { height: 3.5rem; } .showcase-context { font-size: 0.78rem; } .showcase-value { font-size: 1.15rem; } .showcase-change { font-size: 0.78rem; } .query-box { padding: 1.5rem 1.25rem; } .query-line { font-size: 1.25rem; line-height: 2.5; } .query-btn { width: 100%; padding: 1rem 1.5rem; } .popular-cards { padding: 0 0.5rem 0.5rem; margin: 0 -0.5rem; } .popular-section-label { margin-bottom: 0.9rem; } /* 44px minimum touch targets */ .navbar-toggler { min-width: 44px; min-height: 44px; } .navbar-nav .nav-link { min-height: 44px; display: flex; align-items: center; } .example-query { min-height: 44px; display: inline-flex; align-items: center; } .chart-legend-remove { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; } } /* ======================================== Asset Picker Dropdown ======================================== */ .asset-picker-wrapper { position: relative; display: inline-block; } .asset-picker-trigger { background: transparent; cursor: pointer; min-width: 6ch; text-align: center; } .asset-picker-dropdown { position: absolute; top: calc(100% + 0.75rem); left: 50%; transform: translateX(-50%) scale(0.95); opacity: 0; visibility: hidden; z-index: 1000; transition: all 0.2s ease; pointer-events: none; } .asset-picker-dropdown.open { opacity: 1; visibility: visible; transform: translateX(-50%) scale(1); pointer-events: auto; } .asset-picker-inner { display: flex; background: var(--surface); border: none; border-radius: var(--radius-card); box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25); overflow: hidden; min-width: 420px; } /* Left: Asset Types */ .asset-picker-types { display: flex; flex-direction: column; background: #f8fafc; border-right: 1px solid #e2e8f0; padding: 0.5rem; gap: 0.25rem; min-width: 140px; } .asset-type-btn { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; font-size: 0.9rem; font-weight: 500; color: #64748b; background: transparent; border: none; border-radius: 0.5rem; cursor: pointer; transition: all 0.15s ease; text-align: left; } .asset-type-btn:hover { background: #e2e8f0; color: #334155; } .asset-type-btn.active { background: var(--bs-primary); color: #ffffff; } .asset-type-icon { font-size: 1.25rem; line-height: 1; } .asset-type-label { white-space: nowrap; } /* Right: Asset Items */ .asset-picker-items { flex: 1; padding: 0.5rem; max-height: 280px; overflow-y: auto; } .asset-items-group { display: none; flex-direction: column; gap: 0.25rem; } .asset-items-group.active { display: flex; } .asset-item-btn { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; font-size: 0.95rem; color: #334155; background: transparent; border: none; border-radius: 0.5rem; cursor: pointer; transition: all 0.15s ease; text-align: left; } .asset-item-btn:hover { background: #f1f5f9; } .asset-item-btn.selected { background: #ccfbf1; color: var(--bs-primary); } .asset-item-code { display: inline-flex; align-items: center; justify-content: center; min-width: 3.5rem; padding: 0.25rem 0.5rem; font-size: 0.75rem; font-weight: 700; color: #64748b; background: #e2e8f0; border-radius: 0.375rem; text-transform: uppercase; } .asset-item-name { font-weight: 500; } /* Scrollbar styling */ .asset-picker-items::-webkit-scrollbar { width: 6px; } .asset-picker-items::-webkit-scrollbar-track { background: transparent; } .asset-picker-items::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; } .asset-picker-items::-webkit-scrollbar-thumb:hover { background: #94a3b8; } /* ---- Mobile bottom-sheet for asset picker ---- */ .asset-picker-backdrop { display: none; position: fixed; inset: 0; background: rgba(0, 0, 0, 0.4); z-index: 999; opacity: 0; transition: opacity 0.25s ease; pointer-events: none; -webkit-tap-highlight-color: transparent; } .asset-picker-backdrop.open { opacity: 1; pointer-events: auto; } @media (max-width: 768px) { .asset-picker-backdrop { display: block; } .asset-picker-dropdown { position: fixed !important; top: auto !important; bottom: 0 !important; left: 0 !important; right: 0 !important; transform: translateX(0) translateY(100%) !important; z-index: 1000; padding: 0; transition: transform 0.3s cubic-bezier(0.32, 0.72, 0, 1), opacity 0.2s ease; } .asset-picker-dropdown.open { transform: translateX(0) translateY(0) !important; } .asset-picker-inner { flex-direction: column; min-width: auto; width: 100%; border-radius: 1rem 1rem 0 0; border-bottom: none; max-height: 55vh; box-shadow: 0 -10px 40px rgb(0 0 0 / 0.15); } /* Drag handle pill */ .asset-picker-inner::before { content: ''; display: block; width: 36px; height: 4px; background: #cbd5e1; border-radius: 2px; margin: 0.625rem auto 0; flex-shrink: 0; } .asset-picker-types { flex-direction: row; overflow-x: auto; border-right: none; border-bottom: 1px solid #e2e8f0; min-width: auto; flex-shrink: 0; padding: 0.5rem 0.75rem; gap: 0.5rem; } .asset-type-btn { flex-direction: column; gap: 0.25rem; padding: 0.625rem 1rem; font-size: 0.8rem; min-height: 44px; justify-content: center; flex-shrink: 0; } .asset-type-icon { font-size: 1.5rem; } .asset-picker-items { max-height: none; flex: 1; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; padding: 0.5rem 0.75rem; padding-bottom: env(safe-area-inset-bottom, 0.5rem); } .asset-item-btn { min-height: 48px; padding: 0.875rem 1rem; font-size: 1rem; } /* Override compact variant on mobile */ .asset-picker-compact .asset-picker-dropdown { position: fixed !important; top: auto !important; bottom: 0 !important; left: 0 !important; right: 0 !important; transform: translateX(0) translateY(100%) !important; } .asset-picker-compact .asset-picker-dropdown.open { transform: translateX(0) translateY(0) !important; } /* Override compare picker: bottom sheet on mobile instead of upward dropdown */ .result-chart-compare .asset-picker-compact .asset-picker-dropdown { top: auto !important; bottom: 0 !important; transform: translateX(0) translateY(100%) !important; } .result-chart-compare .asset-picker-compact .asset-picker-dropdown.open { transform: translateX(0) translateY(0) !important; } /* Body scroll lock */ body.picker-open { overflow: hidden; } } /* Asset picker validation */ .asset-picker-error { color: var(--bs-danger); font-size: 0.8rem; margin-top: 0.25rem; min-height: 1.2em; } .asset-picker-trigger.is-invalid { border-color: var(--bs-danger); box-shadow: 0 0 0 0.2rem rgba(239, 68, 68, 0.15); } /* Compact variant (for recalc form) */ .asset-picker-compact { position: relative; display: inline-block; } .asset-picker-compact .asset-picker-trigger { font-family: inherit; font-size: inherit; font-weight: 600; color: var(--bs-primary); background: #f1f5f9; border: 1px solid #e2e8f0; border-bottom: 1px solid #e2e8f0; border-radius: 0.375rem; padding: 0.375rem 0.625rem; cursor: pointer; display: inline-flex; align-items: center; gap: 0.375rem; transition: border-color 0.15s ease; white-space: nowrap; min-width: auto; text-align: left; } .asset-picker-compact .asset-picker-trigger:hover, .asset-picker-compact .asset-picker-trigger:focus { border-color: var(--bs-primary); outline: none; background-color: #f1f5f9; } .asset-picker-chevron { font-size: 0.7rem; opacity: 0.6; transition: transform 0.2s ease; } .asset-picker-compact .asset-picker-dropdown { left: 0; transform: translateX(0) scale(0.95); } .asset-picker-compact .asset-picker-dropdown.open { transform: translateX(0) scale(1); } .asset-picker-compact .asset-picker-error { font-size: 0.75rem; position: absolute; top: 100%; left: 0; min-height: 0; margin-top: 0.125rem; } /* ======================================== Result Page - Dashboard Layout ======================================== */ .result-page { display: flex; flex-direction: column; gap: 1rem; } /* ---- Collapsible recalc bar ---- */ .result-recalc { background: var(--surface); border: none; border-radius: var(--radius-card); box-shadow: var(--shadow-card); overflow: hidden; } /* Mobile summary pill — shown only on mobile */ .recalc-summary-pill { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 0.75rem 1rem; background: none; border: none; cursor: pointer; font-family: inherit; font-size: 0.9rem; font-weight: 600; color: var(--text-primary); } .recalc-summary-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .recalc-summary-icon { color: var(--accent); font-size: 0.95rem; flex-shrink: 0; margin-left: 0.5rem; transition: transform 0.2s ease; } .result-recalc.expanded .recalc-summary-icon { transform: rotate(90deg); } /* Form wrapper — collapsed on mobile, visible on desktop */ .recalc-form-wrap { max-height: 0; overflow: hidden; transition: max-height 0.3s ease, padding 0.3s ease; padding: 0 1rem; } .result-recalc.expanded .recalc-form-wrap { max-height: 300px; padding: 0 1rem 0.875rem; } /* On desktop: always show form, hide summary pill */ @media (min-width: 769px) { .recalc-summary-pill { display: none; } .result-recalc { overflow: visible; } .recalc-form-wrap { max-height: none; overflow: visible; padding: 0.875rem 1.25rem 0; } } .result-recalc-form { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; font-size: 0.95rem; color: #64748b; } .recalc-label { color: var(--text-muted); font-size: 1.1rem; flex-shrink: 0; } .recalc-word { color: var(--text-muted); font-weight: 400; white-space: nowrap; } .recalc-group { display: inline-flex; align-items: center; gap: 0.5rem; white-space: nowrap; } .recalc-select { font-family: inherit; font-size: inherit; font-weight: 600; color: var(--bs-primary); background: var(--border-light); border: 1px solid var(--border); border-radius: 0.375rem; padding: 0.375rem 0.625rem; cursor: pointer; transition: border-color 0.15s ease; } .recalc-select:focus { outline: none; border-color: var(--accent); } .recalc-input { font-family: inherit; font-size: inherit; font-weight: 600; color: var(--bs-primary); background: var(--border-light); border: 1px solid var(--border); border-radius: 0.375rem; padding: 0.375rem 0.625rem; min-width: 4ch; width: 7ch; text-align: center; transition: border-color 0.15s ease, width 0.1s ease; } .recalc-input:focus { outline: none; border-color: var(--accent); } .recalc-btn { font-family: inherit; font-size: 1rem; color: #ffffff; background: var(--accent); border: none; border-radius: 0.375rem; padding: 0.4rem 0.75rem; cursor: pointer; transition: opacity 0.15s ease; margin-left: auto; flex-shrink: 0; } .recalc-btn:hover { opacity: 0.85; } /* Hero section */ .result-hero { background: var(--surface); border: none; border-radius: var(--radius-card); padding: 1.5rem 1.25rem 1.25rem; text-align: center; box-shadow: var(--shadow-card); } .result-hero-header { display: flex; align-items: center; justify-content: center; gap: 0.5rem; margin-bottom: 1rem; flex-wrap: wrap; } .result-asset-badge { font-size: 0.8rem; font-weight: 600; color: var(--bs-primary); background: #f1f5f9; border: 1px solid #e2e8f0; padding: 0.3rem 0.875rem; border-radius: 2rem; } .result-date-badge { font-size: 0.8rem; font-weight: 500; color: #64748b; background: #f8fafc; border: 1px solid #e2e8f0; padding: 0.3rem 0.875rem; border-radius: 2rem; display: inline-flex; align-items: center; gap: 0.375rem; } .result-hero-value { margin-bottom: 0.5rem; } .result-current-value { font-size: 2.5rem; font-weight: 700; letter-spacing: -0.03em; line-height: 1.1; color: var(--text-primary); } .result-hero-subtitle { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); margin-top: 0.25rem; } .result-hero-change { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 1rem; font-weight: 600; padding: 0.4rem 0.875rem; border-radius: 2rem; } .result-hero-change.profit { color: var(--profit); background: var(--profit-bg); } .result-hero-change.loss { color: var(--loss); background: var(--loss-bg); } .result-hero-change i { font-size: 1rem; } .result-hero-share { margin-top: 1rem; display: flex; justify-content: center; } .share-actions { position: relative; } .share-actions-trigger { display: inline-flex; align-items: center; justify-content: center; gap: 0.75rem; min-height: 44px; padding: 0.7rem 1rem; border-radius: 999px; border: 1px solid #dbe4ee; background: #ffffff; color: #334155; font-size: 0.92rem; font-weight: 600; box-shadow: 0 8px 20px rgba(15, 23, 42, 0.06); transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease; } .share-actions-trigger:hover, .share-actions.open .share-actions-trigger { border-color: #99f6e4; box-shadow: 0 12px 28px rgba(13, 148, 136, 0.12); transform: translateY(-1px); } .share-actions-trigger-inner { display: inline-flex; align-items: center; gap: 0.5rem; } .share-actions-trigger-caret { font-size: 0.8rem; color: #64748b; transition: transform 0.15s ease; } .share-actions.open .share-actions-trigger-caret { transform: rotate(180deg); } .share-actions-menu { position: absolute; top: calc(100% + 0.65rem); left: 50%; z-index: 30; min-width: 220px; padding: 0.45rem; border-radius: 1rem; border: 1px solid #e2e8f0; background: rgba(255, 255, 255, 0.97); box-shadow: 0 20px 45px rgba(15, 23, 42, 0.14); backdrop-filter: blur(10px); opacity: 0; pointer-events: none; transform: translateX(-50%) translateY(-6px) scale(0.98); transition: opacity 0.16s ease, transform 0.16s ease; } .share-actions.open .share-actions-menu { opacity: 1; pointer-events: auto; transform: translateX(-50%) translateY(0) scale(1); } .share-actions-item { width: 100%; display: flex; align-items: center; gap: 0.7rem; padding: 0.7rem 0.85rem; border: none; background: transparent; border-radius: 0.8rem; color: #334155; font-size: 0.9rem; font-weight: 600; text-align: left; text-decoration: none; transition: background-color 0.15s ease, color 0.15s ease; } .share-actions-item:hover { background: #f0fdfa; color: #0f766e; } .share-actions-item i { font-size: 0.95rem; color: #0f766e; } .share-actions-status { position: absolute; left: 50%; top: calc(100% + 6rem); transform: translateX(-50%); min-width: max-content; font-size: 0.78rem; font-weight: 600; color: #0f766e; } .result-change-pct { opacity: 0.8; font-weight: 500; } /* Summary sentence */ .result-summary { background: var(--surface); border: none; border-radius: var(--radius-card); padding: 1.25rem 1.5rem; box-shadow: var(--shadow-card); } .result-summary p { margin: 0; font-size: 0.95rem; line-height: 1.7; color: #475569; } .result-summary-lead { font-size: 1.05rem !important; line-height: 1.75 !important; color: #1e293b !important; } .result-summary-body { margin-top: 0.5rem !important; } .result-summary-points { display: grid; gap: 0.55rem; margin-top: 0.8rem; padding-top: 0.8rem; border-top: 1px solid #e2e8f0; } .result-summary-points p { position: relative; padding-left: 1.1rem; font-size: 0.92rem; } .result-summary-points p::before { content: ''; position: absolute; left: 0; top: 0.72rem; width: 0.42rem; height: 0.42rem; border-radius: 999px; background: var(--accent); transform: translateY(-50%); } .result-summary-note { margin-top: 0.65rem !important; padding-top: 0.65rem; border-top: 1px dashed #e2e8f0; font-size: 0.82rem !important; line-height: 1.6 !important; color: #64748b !important; } .result-summary .profit { color: var(--profit); } .result-summary .loss { color: var(--loss); } /* Alternative amounts */ .result-alternatives { text-align: center; padding: 0.25rem 0; } .result-alternatives-label { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-muted); } .result-alternatives-list { display: flex; align-items: center; justify-content: center; gap: 0.5rem; margin-top: 0.625rem; flex-wrap: wrap; } .result-context-groups { display: grid; gap: 1rem; } .result-context-group { padding: 0; } .result-context-links { margin-top: 0.625rem; } .result-context-link { font-size: 0.85rem; font-weight: 500; color: #475569; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-pill); padding: 0.4rem 1rem; text-decoration: none; transition: all 0.15s ease; } .result-context-link:hover { color: var(--accent); border-color: var(--accent); background: var(--accent-light); } .result-faq { background: var(--surface); border-radius: var(--radius-card); box-shadow: var(--shadow-card); padding: 1.25rem 1.5rem; } .result-faq-title { font-size: 0.95rem; font-weight: 700; color: #1e293b; margin: 0 0 0.75rem; } .result-faq-item { border-top: 1px solid #e5e7eb; padding: 0.7rem 0; } .result-faq-item:first-of-type { border-top: 0; padding-top: 0.1rem; } .result-faq-item summary { cursor: pointer; font-size: 0.9rem; font-weight: 600; color: #334155; list-style: none; } .result-faq-item summary::-webkit-details-marker { display: none; } .result-faq-item summary::after { content: '+'; float: right; color: #94a3b8; font-weight: 700; } .result-faq-item[open] summary::after { content: '−'; } .result-faq-item p { margin: 0.5rem 0 0; font-size: 0.88rem; line-height: 1.65; color: #475569; } /* Mobile result page responsive */ @media (max-width: 768px) { .result-recalc-form { font-size: 0.9rem; } /* iOS Safari auto-zoom fix: inputs must be >= 16px */ .recalc-select, .recalc-input, .asset-picker-compact .asset-picker-trigger { font-size: 16px !important; } .recalc-btn { margin-left: 0; width: 100%; padding: 0.5rem; margin-top: 0.25rem; min-height: 44px; } .result-hero { padding: 1.25rem 1rem; } .result-current-value { font-size: 2.25rem; } .share-actions-menu { min-width: 210px; } .result-chart-wrap { height: 200px; } .result-summary { padding: 1.1rem 1rem; } .result-summary-lead { font-size: 1rem !important; } } @media (max-width: 480px) { .result-current-value { font-size: 2rem; } .result-hero-change { font-size: 0.9rem; } .share-actions-trigger { width: 100%; } .share-actions-menu { width: min(260px, calc(100vw - 2rem)); } } /* Desktop: larger hero, wider layout */ @media (min-width: 769px) { .result-page { gap: 1.5rem; } .result-hero { padding: 2rem 2rem 1.75rem; } .result-current-value { font-size: 3rem; } .result-hero-header { margin-bottom: 1.5rem; } .result-hero-change { font-size: 1.05rem; padding: 0.5rem 1rem; } } /* ========================================================= Chart ========================================================= */ .result-chart-card { background: var(--surface); border: none; border-radius: var(--radius-card); overflow: visible; box-shadow: var(--shadow-card); } .result-chart-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; padding: 1rem 1.25rem 0.5rem; flex-wrap: wrap; } .result-chart-title { font-size: 0.8rem; font-weight: 600; color: #6b7280; text-transform: uppercase; letter-spacing: 0.06em; white-space: nowrap; padding-top: 0.2rem; } .result-chart-legend { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; } .chart-legend-item { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.8rem; font-weight: 500; color: #374151; background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 20px; padding: 0.2rem 0.6rem; } .chart-legend-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; } .chart-legend-name { display: inline-flex; align-items: center; line-height: 1; max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .chart-legend-return { display: inline-flex; align-items: center; line-height: 1; font-size: 0.74rem; font-weight: 700; margin-left: 0.1rem; } .chart-legend-return.profit { color: #16a34a; } .chart-legend-return.loss { color: #dc2626; } .chart-legend-return.neutral { color: #9ca3af; } .chart-legend-remove { background: none; border: none; padding: 0; margin-left: 0.1rem; font-size: 1rem; line-height: 1; color: #9ca3af; cursor: pointer; transition: color 0.15s; } .chart-legend-remove:hover { color: #ef4444; } .result-chart-wrap { padding: 0.25rem 0.5rem 0.25rem; height: 320px; position: relative; } .result-chart-footer { padding: 0.5rem 1.25rem 0.875rem; border-top: 1px solid #f3f4f6; } .result-chart-notice { padding: 0.5rem 1.25rem 0.875rem; font-size: 0.75rem; color: #6b7280; line-height: 1.4; } .result-chart-compare { display: flex; align-items: center; gap: 0.5rem; } .result-chart-compare .asset-picker-compact .asset-picker-trigger { font-size: 0.8rem; font-weight: 600; color: var(--accent); background: var(--accent-light); border-color: var(--accent-border); border-radius: var(--radius-pill); padding: 0.3rem 0.75rem; } .result-chart-compare .asset-picker-compact .asset-picker-trigger:hover { background: #ccfbf1; border-color: #5eead4; } /* Compare picker dropdown opens upward — the chart card clips anything below the footer */ .result-chart-compare .asset-picker-compact .asset-picker-dropdown { top: auto; bottom: calc(100% + 0.75rem); transform: translateX(0) scale(0.95); } .result-chart-compare .asset-picker-compact .asset-picker-dropdown.open { transform: translateX(0) scale(1); } @media (max-width: 576px) { .result-chart-legend { gap: 0.4rem; } .chart-legend-item { min-height: 2rem; gap: 0.3rem; padding: 0.25rem 0.45rem; } .chart-legend-name { min-width: 0; max-width: none; } .chart-legend-return { margin-left: 0.1rem; } .result-chart-legend .chart-legend-remove { min-width: 1.35rem; min-height: 1.35rem; width: 1.35rem; height: 1.35rem; margin-left: 0.15rem; border-radius: 999px; border: 1px solid #e5e7eb; background: #ffffff; font-size: 0.85rem; } .result-chart-wrap { height: 200px; } .result-chart-header { flex-direction: column; gap: 0.5rem; } } /* ===== About Page ===== */ .about-page { max-width: 1040px; margin: 0 auto; } .about-hero { background: linear-gradient(135deg, #f0fdfa 0%, #ffffff 65%); border: 1px solid #ccfbf1; border-radius: 1.5rem; padding: 2rem; box-shadow: var(--shadow-card); margin-bottom: 1.5rem; } .about-kicker { display: inline-flex; align-items: center; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); } .about-title { margin: 0.5rem 0 0.9rem; font-size: clamp(2rem, 4vw, 3.2rem); line-height: 1.08; letter-spacing: -0.04em; color: #0f172a; max-width: 14ch; } .about-lead { margin: 0; max-width: 68ch; font-size: 1rem; line-height: 1.8; color: #475569; } .about-source-card, .about-section { background: var(--surface); border-radius: var(--radius-card); box-shadow: var(--shadow-card); } .about-section-heading h2, .about-source-card h3, .about-method-step h3 { margin: 0; color: #0f172a; } .about-source-card p, .about-method-step p, .about-notes-list li { margin: 0; color: #475569; line-height: 1.7; font-size: 0.94rem; } .about-section { padding: 1.5rem; margin-bottom: 1.25rem; } .about-section-heading { margin-bottom: 1rem; } .about-section-heading h2 { margin-top: 0.35rem; font-size: 1.4rem; letter-spacing: -0.03em; } .about-method-grid { display: grid; gap: 0.9rem; } .about-method-step { display: grid; grid-template-columns: 2.5rem 1fr; gap: 0.9rem; align-items: flex-start; padding: 1rem; background: var(--surface-muted); border-radius: 1rem; } .about-method-number { display: inline-flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; border-radius: 999px; background: var(--accent-light); color: var(--accent); font-weight: 800; } .about-method-step h3, .about-source-card h3 { font-size: 0.98rem; margin-bottom: 0.35rem; } .about-sources-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; } .about-source-card { padding: 1.1rem 1.2rem; border: 1px solid #e2e8f0; } .about-source-card a { display: inline-flex; margin-top: 0.7rem; color: var(--accent); font-size: 0.88rem; font-weight: 600; text-decoration: none; } .about-source-card a:hover { text-decoration: underline; } .about-section-accent { background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%); border: 1px solid #e2e8f0; } .about-notes-list { margin: 0; padding-left: 1.1rem; display: grid; gap: 0.55rem; } .about-author-card { border: 1px solid #e2e8f0; } .about-author-name { margin: 0; font-size: 1.05rem; font-weight: 700; color: #0f172a; } .about-author-role { margin: 0.2rem 0 0; font-size: 0.92rem; color: #475569; } .about-author-links { margin-top: 0.65rem; display: flex; gap: 0.9rem; flex-wrap: wrap; } .about-author-links a { color: var(--accent); font-size: 0.88rem; font-weight: 600; text-decoration: none; } .about-author-links a:hover { text-decoration: underline; } /* ===== Guides ===== */ .guide-page, .guide-index-page { max-width: 1100px; margin: 0 auto; } .guide-hero, .guide-index-hero { background: linear-gradient(135deg, #ecfeff 0%, #ffffff 65%); border: 1px solid #bae6fd; border-radius: 1.5rem; padding: 2rem; box-shadow: var(--shadow-card); margin-bottom: 1.5rem; } .guide-title, .guide-index-title { margin: 0.45rem 0 0.85rem; font-size: clamp(2rem, 4vw, 3.1rem); line-height: 1.06; letter-spacing: -0.04em; color: #0f172a; max-width: 16ch; } .guide-lead, .guide-index-lead, .guide-index-card p, .guide-related-link span, .result-reading-card span { margin: 0; color: #475569; line-height: 1.75; } .guide-meta, .guide-keywords, .guide-index-card-footer, .result-reading-header, .guide-breadcrumbs, .guide-index-path, .guide-featured-header, .guide-index-section-header { display: flex; flex-wrap: wrap; gap: 0.75rem; } .guide-meta, .guide-index-meta, .guide-index-card-date { color: #64748b; font-size: 0.88rem; } .guide-keywords { margin-top: 1rem; } .guide-breadcrumbs { align-items: center; margin-bottom: 1rem; color: #64748b; font-size: 0.9rem; } .guide-breadcrumbs a { color: #0f766e; text-decoration: none; } .guide-breadcrumbs a:hover { text-decoration: underline; } .guide-keyword, .result-reading-kicker { display: inline-flex; align-items: center; border-radius: 999px; background: #ecfeff; color: #0f766e; font-size: 0.78rem; font-weight: 700; padding: 0.35rem 0.7rem; } .guide-layout { display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(280px, 0.9fr); gap: 1.25rem; align-items: start; } .guide-index-path, .guide-featured-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; } .guide-index-path { margin: 1.5rem 0 0; } .guide-index-path-card, .guide-featured-card { background: rgba(255, 255, 255, 0.9); border: 1px solid #dbeafe; border-radius: 1rem; padding: 1rem; } .guide-index-path-card strong, .guide-featured-card h3, .guide-index-card h3 { display: block; color: #0f172a; margin: 0 0 0.35rem; } .guide-index-path-card span, .guide-featured-card p, .guide-index-section-header h2 { color: #475569; line-height: 1.7; margin: 0; } .guide-featured, .guide-index-section { margin-bottom: 1.5rem; } .guide-featured-header, .guide-index-section-header { justify-content: space-between; align-items: end; margin-bottom: 1rem; } .guide-featured-header h2, .guide-index-section-header h2 { margin: 0; font-size: 1.25rem; line-height: 1.35; color: #0f172a; letter-spacing: -0.03em; } .guide-featured-step, .guide-index-section-count { display: inline-flex; color: #64748b; font-size: 0.82rem; font-weight: 700; margin-bottom: 0.55rem; } .guide-featured-card a { color: var(--accent); text-decoration: none; } .guide-featured-card a:hover { text-decoration: underline; } .guide-index-sections { display: grid; gap: 1.25rem; } .guide-article, .guide-card, .guide-index-card, .result-reading { background: var(--surface); border-radius: var(--radius-card); box-shadow: var(--shadow-card); } .guide-article { padding: 1.75rem; } .guide-prose { color: #1e293b; } .guide-prose h2, .guide-prose h3, .guide-card-title, .guide-faq-title, .result-reading-header h2 { color: #0f172a; letter-spacing: -0.03em; } .guide-prose h2 { margin: 2rem 0 0.8rem; font-size: 1.4rem; scroll-margin-top: 6.5rem; } .guide-prose h3 { margin: 1.4rem 0 0.7rem; font-size: 1.05rem; scroll-margin-top: 6.5rem; } .guide-prose p, .guide-prose li, .guide-faq-item p { color: #475569; line-height: 1.85; font-size: 0.98rem; } .guide-prose ul, .guide-prose ol { padding-left: 1.2rem; margin-bottom: 1rem; } .guide-prose a, .guide-index-card a, .guide-side-link, .guide-related-link, .result-reading-card { color: var(--accent); text-decoration: none; } .guide-prose a:hover, .guide-index-card a:hover, .guide-side-link:hover, .guide-related-link:hover, .result-reading-card:hover { text-decoration: underline; } .guide-sidebar { display: grid; gap: 1rem; } .guide-card { padding: 1.2rem; border: 1px solid #e2e8f0; } .guide-card-title { margin: 0 0 0.85rem; font-size: 1rem; } .guide-link-list { display: grid; gap: 0.7rem; } .guide-link-list-toc { gap: 0.35rem; padding-left: 1.1rem; margin: 0; } .guide-side-link, .guide-related-link { display: block; padding: 0.9rem 1rem; border-radius: 1rem; background: #f8fafc; border: 1px solid #e2e8f0; } .guide-toc-item { color: #94a3b8; } .guide-toc-item-subtle { margin-left: 0.9rem; } .guide-link-list-toc .guide-side-link { display: inline; padding: 0; border: 0; border-radius: 0; background: transparent; color: #475569; } .guide-link-list-toc .guide-side-link:hover { color: var(--accent); text-decoration: underline; } .guide-related-link strong, .result-reading-card strong { display: block; color: #0f172a; margin-bottom: 0.25rem; } .guide-faq { margin-top: 1.5rem; } .guide-faq-title { margin: 0 0 0.85rem; font-size: 1.35rem; } .guide-faq-item { background: var(--surface); border-radius: 1rem; box-shadow: var(--shadow-card); margin-bottom: 0.75rem; padding: 0.15rem 1rem; } .guide-faq-item summary { cursor: pointer; list-style: none; font-weight: 700; color: #0f172a; padding: 0.9rem 0; } .guide-faq-item summary::-webkit-details-marker { display: none; } .guide-faq-item p { margin: 0 0 1rem; } .guide-index-grid, .result-reading-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; } .guide-index-card { padding: 1.25rem; border: 1px solid #e2e8f0; } .guide-index-card h2 { margin: 0.55rem 0 0.65rem; font-size: 1.15rem; line-height: 1.3; } .guide-index-card h3 { margin: 0.55rem 0 0.65rem; font-size: 1.15rem; line-height: 1.3; } .guide-index-card-footer { justify-content: space-between; align-items: center; margin-top: 1rem; font-size: 0.88rem; } .result-reading { margin-top: 1.25rem; padding: 1.25rem; } .result-reading-header { align-items: end; justify-content: space-between; margin-bottom: 1rem; } .result-reading-header h2 { margin: 0; font-size: 1.25rem; } .result-reading-card { display: block; padding: 1rem; border-radius: 1rem; background: #f8fafc; border: 1px solid #e2e8f0; } /* ===== Footer ===== */ .site-footer { background: #0f172a; color: #94a3b8; padding: 2.5rem 0 0; margin-top: 3rem; } .footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 2.5rem; padding-bottom: 2rem; } .footer-brand-name { font-weight: 700; font-size: 1.1rem; color: #f1f5f9; letter-spacing: -0.02em; } .footer-brand-desc { font-size: 0.85rem; line-height: 1.6; color: #64748b; margin: 0; max-width: 280px; } .footer-creator { margin-top: 0.75rem; display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.8rem; color: #64748b; } .footer-creator > * { display: block; padding: 0.250rem 0; } .footer-creator strong { color: #cbd5e1; font-weight: 600; } .footer-creator a { color: #94a3b8; text-decoration: none; } .footer-creator a:hover { color: #f1f5f9; } .footer-heading { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: #cbd5e1; margin-bottom: 0.875rem; } .footer-links ul, .footer-sources ul { list-style: none; padding: 0; margin: 0; } .footer-links li { margin-bottom: 0.5rem; } .footer-links a { color: #94a3b8; text-decoration: none; font-size: 0.85rem; transition: color 0.15s ease; } .footer-links a:hover { color: #f1f5f9; } .footer-sources li { margin-bottom: 0.625rem; display: flex; flex-direction: column; gap: 0.125rem; } .footer-sources a { color: #94a3b8; text-decoration: none; font-size: 0.85rem; font-weight: 500; transition: color 0.15s ease; } .footer-sources a:hover { color: #f1f5f9; } .footer-source-note { font-size: 0.75rem; color: #475569; } .footer-bottom { border-top: 1px solid #1e293b; padding: 1.25rem 0; text-align: center; } .footer-bottom small { font-size: 0.78rem; color: #475569; } @media (max-width: 768px) { .about-hero { padding: 1rem; } .about-sources-list { grid-template-columns: 1fr; } .about-section { padding: 1rem; } .about-method-step { grid-template-columns: 1fr; padding: 0.85rem; } .about-method-number { display: none; } .about-source-card { padding: 0.9rem 1rem; } .guide-hero, .guide-index-hero, .guide-article, .guide-card, .result-reading { padding: 1rem; } .guide-layout, .guide-index-grid, .guide-index-path, .guide-featured-grid, .result-reading-grid { grid-template-columns: 1fr; } .guide-featured-header, .guide-index-section-header { align-items: start; } .guide-title, .guide-index-title { max-width: none; } .footer-grid { grid-template-columns: 1fr; gap: 1.4rem; padding-bottom: 1.25rem; text-align: center; } .footer-links, .footer-sources { justify-self: stretch; } .footer-brand-desc { color: #94a3b8; max-width: none; margin: 0 auto; } .footer-brand .d-flex { justify-content: center; } .footer-links li { margin-bottom: 0.4rem; } .footer-creator { color: #94a3b8; margin-top: 0.6rem; gap: 0.15rem; align-items: center; } .footer-source-note, .footer-bottom small { color: #64748b; } .footer-bottom { padding: 0.85rem 0 1rem; } .footer-sources li { align-items: center; } } /* ===== Admin Panel ===== */ .admin-page { max-width: 960px; margin: 0 auto; } .admin-log { max-height: 400px; overflow-y: auto; } .admin-log-entry { padding: 0.625rem 0; border-bottom: 1px solid #f1f5f9; } .admin-log-entry:last-child { border-bottom: none; } .admin-log-message { margin-left: 1.75rem; word-break: break-word; } .admin-action-btn { font-weight: 500; padding: 0.5rem 1rem; } .admin-action-btn:disabled { opacity: 0.65; cursor: not-allowed; }