Dashboard / styles.css
SolarumAsteridion's picture
Upload 2 files
45cac67 verified
Raw
History Blame Contribute Delete
19.2 kB
:root{
--canvas:#000000;
--surface-card:#0a0a0c;
--surface-elevated:#101012;
--surface-deep:#06060a;
--hairline: rgba(255,255,255,0.06);
--hairline-strong: rgba(255,255,255,0.14);
--divider-soft: rgba(255,255,255,0.04);
--ink:#fcfdff;
--body-c: rgba(252,253,255,0.86);
--charcoal: rgba(252,253,255,0.7);
--mute:#a1a4a5;
--ash:#888e90;
--stone:#464a4d;
--primary:#fcfdff;
--primary-on:#000000;
--surface-light:#f1f7fe;
--accent-orange:#ff801f;
--accent-orange-glow: rgba(255,89,0,0.22);
--accent-yellow:#ffc53d;
--accent-blue:#3b9eff;
--accent-blue-glow: rgba(0,117,255,0.34);
--accent-green:#11ff99;
--accent-green-glow: rgba(34,255,153,0.18);
--accent-red:#ff2047;
--accent-red-glow: rgba(255,32,71,0.34);
--font-display:'Fraunces', Georgia, serif;
--font-body:'Inter Tight', Inter, sans-serif;
--font-ui:'Inter', sans-serif;
--font-mono:'JetBrains Mono', monospace;
}
*{box-sizing:border-box;}
html,body{background:var(--canvas); color:var(--ink); margin:0; font-family:var(--font-ui); -webkit-font-smoothing:antialiased;}
::selection{background:rgba(252,253,255,0.18);}
::-webkit-scrollbar{width:10px; height:10px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--hairline-strong); border-radius:8px;}
.font-display{font-family:var(--font-display); font-feature-settings:"ss01","liga"; font-weight:400; line-height:1;}
.font-body{font-family:var(--font-body);}
.font-mono{font-family:var(--font-mono);}
.display-xxl{font-family:var(--font-display); font-feature-settings:"ss01"; font-weight:400; line-height:1; letter-spacing:-0.96px; font-size:clamp(34px,7vw,72px);}
.display-xl{font-family:var(--font-display); font-feature-settings:"ss01"; font-weight:400; line-height:1; letter-spacing:-0.7px; font-size:clamp(28px,4.5vw,44px);}
.subtitle{font-family:var(--font-body); font-size:18px; line-height:1.5; color:var(--body-c);}
.hairline-b{border-bottom:1px solid var(--hairline);}
.hairline-t{border-top:1px solid var(--hairline);}
.btn-primary{background:var(--primary); color:var(--primary-on); font-family:var(--font-ui); font-weight:500; font-size:14px; padding:8px 16px; border-radius:8px; height:36px; display:inline-flex; align-items:center; justify-content:center; gap:6px; border:none; cursor:pointer; transition:background .15s ease, transform .1s ease;}
.btn-primary:hover{background:#e8eef7;}
.btn-primary:active{background:var(--surface-light); transform:scale(.98);}
.btn-primary:disabled{opacity:.4; cursor:not-allowed;}
.btn-ghost{background:var(--surface-elevated); color:var(--ink); border:1px solid var(--hairline-strong); font-family:var(--font-ui); font-weight:500; font-size:14px; padding:8px 16px; border-radius:8px; height:36px; display:inline-flex; align-items:center; justify-content:center; gap:6px; cursor:pointer; transition:background .15s ease;}
.btn-ghost:hover{background:#17171a;}
.btn-ghost:disabled{opacity:.4; cursor:not-allowed;}
.btn-outline{background:transparent; color:var(--ink); border:1px solid var(--hairline-strong); font-family:var(--font-ui); font-weight:500; font-size:14px; padding:8px 16px; border-radius:8px; height:36px; display:inline-flex; align-items:center; justify-content:center; gap:6px; cursor:pointer; transition:border-color .15s ease;}
.btn-outline:hover{border-color:var(--ink);}
.btn-icon{width:36px; height:36px; border-radius:8px; background:var(--surface-elevated); border:1px solid var(--hairline-strong); color:var(--ink); display:inline-flex; align-items:center; justify-content:center; cursor:pointer;}
.btn-icon:hover{background:#17171a;}
.card{background:var(--surface-card); border-radius:12px; padding:24px;}
.card-b{background:var(--surface-card); border:1px solid var(--hairline-strong); border-radius:12px; padding:24px;}
.card-elevated{background:var(--surface-elevated); border:1px solid var(--hairline-strong); border-radius:12px; padding:24px;}
.code-window{background:var(--surface-deep); border:1px solid var(--hairline-strong); border-radius:12px; padding:20px; font-family:var(--font-mono); font-size:13px; color:var(--body-c);}
.pill{background:var(--surface-elevated); color:var(--body-c); font-size:12px; font-family:var(--font-ui); padding:4px 10px; border-radius:9999px; display:inline-flex; align-items:center; gap:6px; white-space:nowrap;}
.status-dot{width:8px; height:8px; border-radius:9999px; display:inline-block; flex-shrink:0;}
.field-label{font-family:var(--font-ui); font-size:12px; font-weight:500; color:var(--mute); text-transform:uppercase; letter-spacing:0.5px; margin-bottom:6px; display:block;}
.input{width:100%; background:var(--surface-card); color:var(--ink); border:1px solid var(--hairline-strong); border-radius:8px; padding:10px 14px; height:40px; font-family:var(--font-ui); font-size:14px; outline:none; transition:border-color .15s ease;}
.input:focus{border-color:var(--ink);}
textarea.input{height:auto; padding-top:10px;}
select.input{appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23a1a4a5'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 14px center; padding-right:32px;}
.nav-link{font-family:var(--font-ui); font-size:14px; letter-spacing:0.35px; color:var(--charcoal); padding:8px 4px; cursor:pointer; border-bottom:2px solid transparent; transition:color .15s ease;}
.nav-link:hover{color:var(--ink);}
.nav-link.active{color:var(--ink); border-bottom-color:var(--ink);}
.glow-blue{position:relative;}
.glow-blue::before{content:''; position:absolute; top:0; left:50%; transform:translateX(-50%); width:1100px; max-width:160vw; height:480px; background:radial-gradient(ellipse at top, var(--accent-blue-glow), transparent 70%); pointer-events:none; z-index:0; opacity:.55;}
.glow-green::before{content:''; position:absolute; top:0; left:50%; transform:translateX(-50%); width:1100px; max-width:160vw; height:480px; background:radial-gradient(ellipse at top, var(--accent-green-glow), transparent 70%); pointer-events:none; z-index:0; opacity:.6;}
.glow-orange::before{content:''; position:absolute; top:0; left:50%; transform:translateX(-50%); width:1100px; max-width:160vw; height:480px; background:radial-gradient(ellipse at top, var(--accent-orange-glow), transparent 70%); pointer-events:none; z-index:0; opacity:.5;}
.glow-wrap{position:relative; overflow:hidden;}
.glow-wrap > *{position:relative; z-index:1;}
.kanban-col{background:var(--surface-card); border:1px solid var(--hairline-strong); border-radius:12px; padding:16px; min-height:120px;}
.kanban-card{background:var(--surface-elevated); border:1px solid var(--hairline); border-left:3px solid var(--hairline-strong); border-radius:8px; padding:12px; margin-bottom:10px; cursor:pointer; transition:border-color .15s ease, transform .1s ease;}
.kanban-card:hover{border-color:var(--hairline-strong); transform:translateY(-1px);}
table.data-table{width:100%; border-collapse:collapse; font-family:var(--font-ui); font-size:13px;}
table.data-table th{text-align:left; font-weight:500; color:var(--mute); text-transform:uppercase; font-size:11px; letter-spacing:0.5px; padding:10px 12px; border-bottom:1px solid var(--hairline-strong); cursor:pointer; white-space:nowrap; user-select:none;}
table.data-table th:hover{color:var(--ink);}
table.data-table td{padding:12px; border-bottom:1px solid var(--divider-soft); color:var(--body-c); vertical-align:middle;}
table.data-table tr:hover td{background:rgba(255,255,255,0.02);}
.progress-track{height:8px; background:var(--hairline); border-radius:9999px; overflow:hidden; width:100%;}
.progress-fill{height:100%; border-radius:9999px; transition:width .4s ease;}
.modal-overlay{position:fixed; inset:0; background:rgba(0,0,0,0.7); backdrop-filter:blur(4px); z-index:100; display:flex; align-items:flex-start; justify-content:center; overflow-y:auto; padding:40px 16px;}
.modal-panel{background:var(--surface-card); border:1px solid var(--hairline-strong); border-radius:12px; max-width:640px; width:100%; padding:32px; margin:auto;}
.chip{background:var(--surface-elevated); border:1px solid var(--hairline-strong); color:var(--body-c); font-size:12px; padding:4px 8px 4px 10px; border-radius:9999px; display:inline-flex; align-items:center; gap:6px;}
.chip button{background:none; border:none; color:var(--ash); cursor:pointer; font-size:14px; line-height:1; padding:0;}
.chip button:hover{color:var(--accent-red);}
.star{cursor:pointer; font-size:20px; color:var(--stone); transition:color .1s ease;}
.star.filled{color:var(--accent-yellow);}
.toast{background:var(--surface-elevated); border:1px solid var(--hairline-strong); border-radius:8px; padding:12px 16px; color:var(--ink); font-size:13px; font-family:var(--font-ui); box-shadow:none; min-width:260px; max-width:360px; display:flex; align-items:flex-start; gap:10px; animation:toast-in .2s ease;}
@keyframes toast-in{from{opacity:0; transform:translateY(-8px);} to{opacity:1; transform:translateY(0);}}
.chat-bubble-user{background:var(--surface-elevated); border:1px solid var(--hairline-strong); border-radius:12px 12px 2px 12px; padding:14px 16px; max-width:78%; margin-left:auto; font-size:14px; color:var(--ink); font-family:var(--font-body);}
.chat-card{background:var(--surface-deep); border:1px solid var(--hairline-strong); border-radius:12px; padding:20px; max-width:92%; font-family:var(--font-ui);}
.spinner{width:16px; height:16px; border-radius:50%; border:2px solid var(--hairline-strong); border-top-color:var(--ink); animation:spin .7s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
.typing-dot{width:6px; height:6px; border-radius:50%; background:var(--mute); animation:blink 1.2s infinite ease-in-out;}
.typing-dot:nth-child(2){animation-delay:.2s;} .typing-dot:nth-child(3){animation-delay:.4s;}
@keyframes blink{0%,80%,100%{opacity:.2;} 40%{opacity:1;}}
.fab{position:fixed; bottom:24px; right:24px; z-index:40; width:52px; height:52px; border-radius:9999px; background:var(--primary); color:var(--primary-on); border:none; font-size:26px; display:flex; align-items:center; justify-content:center; cursor:pointer; transition:transform .15s ease;}
.fab:hover{transform:scale(1.06);}
@media (max-width: 1023px){
.desktop-nav{display:none;}
}
@media (min-width: 1024px){
.mobile-nav-toggle{display:none;}
}
/* Best-of-three additions: editorial metrics, local advisor, responsive flow */
body{min-height:100vh;background:
radial-gradient(900px 460px at 85% -10%,rgba(61,107,255,.13),transparent 62%),
radial-gradient(760px 420px at 0 30%,rgba(163,255,112,.045),transparent 65%),var(--canvas);}
nav{backdrop-filter:blur(18px);background:rgba(0,0,0,.82)!important;}
#view-root{min-height:calc(100vh - 190px);}
.app-status{display:flex;align-items:center;gap:8px;color:var(--mute);font-size:11px;letter-spacing:.2px;}
.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 26px;}
.metric-card{position:relative;min-height:145px;padding:18px;border:1px solid var(--hairline);border-radius:12px;background:linear-gradient(145deg,rgba(255,255,255,.035),rgba(255,255,255,.012));overflow:hidden;}
.metric-card::after{content:"";position:absolute;inset:auto -20% -65% 10%;height:120px;background:radial-gradient(ellipse,rgba(255,255,255,.07),transparent 68%);pointer-events:none;}
.metric-card strong{display:block;margin:24px 0 7px;font-family:var(--font-display);font-size:32px;font-weight:400;letter-spacing:-1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.metric-card span{display:block;color:var(--ash);font-size:11px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.metric-lime{border-color:rgba(17,255,153,.16);}.metric-lime strong{color:#c8ff9b;}
.metric-blue{border-color:rgba(59,158,255,.18);}.metric-blue strong{color:#9dcbff;}
.metric-violet{border-color:rgba(171,130,255,.18);}.metric-violet strong{color:#d0b7ff;font-size:26px;}
.focus-panel{display:flex;align-items:center;justify-content:space-between;gap:22px;margin-bottom:54px;padding:20px 22px;border:1px solid rgba(216,249,155,.16);border-radius:12px;background:linear-gradient(100deg,rgba(216,249,155,.07),rgba(59,158,255,.035));}
.focus-panel h2{font-family:var(--font-display);font-size:24px;font-weight:400;letter-spacing:-.5px;margin:2px 0 6px;}
.focus-panel p:last-child{color:var(--ash);font-size:12px;}
.section-kicker{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:18px;}
.section-kicker span{color:var(--mute);font-size:10px;text-transform:uppercase;letter-spacing:1.2px;}
.section-kicker h2{font-family:var(--font-display);font-weight:400;font-size:26px;}
.advisor-index{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;}
.advisor-index span,.advisor-source{display:inline-flex;align-items:center;gap:7px;padding:5px 9px;border:1px solid var(--hairline);border-radius:999px;background:rgba(255,255,255,.025);color:var(--mute);font-size:10px;text-transform:uppercase;letter-spacing:.55px;}
.advisor-source{margin-bottom:14px;color:var(--body-c);}
.quick-prompts{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;}
.quick-prompts button{padding:7px 10px;border:1px solid var(--hairline-strong);border-radius:999px;background:var(--surface-card);color:var(--charcoal);font-size:11px;cursor:pointer;transition:.15s ease;}
.quick-prompts button:hover{border-color:var(--accent-blue);color:var(--ink);transform:translateY(-1px);}
.bar-chart{height:280px;display:grid;grid-template-columns:32px 1fr;gap:12px;padding-top:16px;}
.chart-y{display:flex;flex-direction:column;justify-content:space-between;color:var(--stone);font-family:var(--font-mono);font-size:9px;text-align:right;padding-bottom:26px;}
.chart-bars{display:grid;grid-template-columns:repeat(8,minmax(22px,1fr));gap:8px;border-left:1px solid var(--hairline);border-bottom:1px solid var(--hairline);padding:0 6px 0 12px;background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(50% - 1px),var(--divider-soft) 50%,transparent calc(50% + 1px));}
.chart-bar-group{min-width:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:8px;}
.chart-bar-area{height:225px;width:100%;display:flex;align-items:flex-end;justify-content:center;}
.chart-bar{position:relative;width:min(34px,70%);min-height:4px;border-radius:5px 5px 1px 1px;background:linear-gradient(to top,rgba(59,158,255,.45),rgba(59,158,255,.9));box-shadow:0 0 22px rgba(59,158,255,.13);animation:bar-grow .5s ease-out;}
.chart-bar b{position:absolute;top:-18px;left:50%;transform:translateX(-50%);font:9px var(--font-mono);color:var(--mute);}
.chart-bar-group small{height:18px;color:var(--ash);font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
@keyframes bar-grow{from{height:0;opacity:.2}to{opacity:1}}
.app-footer{border-top:1px solid var(--divider-soft);padding:26px 20px 34px;color:var(--stone);font-size:11px;}
.app-footer-inner{max-width:1200px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:16px;}
.app-footer strong{font-family:var(--font-display);font-size:15px;font-weight:400;color:var(--charcoal);}
@media(max-width:900px){
.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
#kanban-board{grid-template-columns:1fr!important;}
#analytics-grid{grid-template-columns:1fr!important;}
}
@media(max-width:620px){
#view-root{padding-left:14px!important;padding-right:14px!important;}
.metric-grid{grid-template-columns:1fr 1fr;gap:7px;}
.metric-card{min-height:120px;padding:14px;}.metric-card strong{font-size:25px;margin-top:18px;}.metric-violet strong{font-size:20px;}
.focus-panel{align-items:flex-start;flex-direction:column;margin-bottom:45px;}.focus-panel .btn-primary{width:100%;}
.section-kicker{align-items:flex-start;flex-direction:column;gap:4px;}
.app-status{display:none;}.app-footer-inner{align-items:flex-start;flex-direction:column;}
.chart-bars{gap:4px;padding-left:7px}.chart-bar{width:70%}.chart-bar-group small{font-size:8px;transform:rotate(-32deg);transform-origin:center top;overflow:visible;}
table.data-table{min-width:760px;}
}
@media(max-width:390px){.metric-grid{grid-template-columns:1fr}.metric-card{min-height:104px}.metric-card strong{margin-top:12px}.quick-prompts{display:grid}.quick-prompts button{text-align:left}}
/* Vault Styles */
.vault-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
gap: 20px;
margin-top: 24px;
}
.question-card {
background: var(--surface-card);
border: 1px solid var(--hairline-strong);
border-radius: 12px;
padding: 20px;
display: flex;
flex-direction: column;
gap: 12px;
position: relative;
transition: transform 0.2s ease, border-color 0.2s ease;
}
.question-card:hover {
transform: translateY(-2px);
border-color: var(--accent-blue);
}
.question-img-container {
width: 100%;
height: 180px;
border-radius: 8px;
overflow: hidden;
background: var(--surface-deep);
border: 1px solid var(--divider-soft);
display: flex;
align-items: center;
justify-content: center;
cursor: zoom-in;
}
.question-img-container img {
max-width: 100%;
max-height: 100%;
object-fit: contain;
}
.upload-zone {
border: 2px dashed var(--hairline-strong);
border-radius: 12px;
padding: 32px 20px;
text-align: center;
background: rgba(255, 255, 255, 0.01);
cursor: pointer;
transition: border-color 0.15s ease, background 0.15s ease;
}
.upload-zone:hover {
border-color: var(--accent-blue);
background: rgba(59, 158, 255, 0.03);
}
.upload-preview-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
gap: 12px;
margin-top: 16px;
}
.upload-preview-item {
position: relative;
aspect-ratio: 1;
border-radius: 8px;
overflow: hidden;
border: 1px solid var(--hairline-strong);
background: var(--surface-deep);
}
.upload-preview-item img {
width: 100%;
height: 100%;
object-fit: cover;
}
.upload-preview-item button {
position: absolute;
top: 4px;
right: 4px;
width: 20px;
height: 20px;
border-radius: 50%;
background: rgba(0, 0, 0, 0.7);
color: #fff;
border: none;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
font-size: 10px;
}
.upload-preview-item button:hover {
background: var(--accent-red);
}
.lightbox {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.9);
backdrop-filter: blur(8px);
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
cursor: zoom-out;
}
.lightbox img {
max-width: 90%;
max-height: 90%;
object-fit: contain;
border-radius: 4px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
}