253 lines
6.1 KiB
CSS
253 lines
6.1 KiB
CSS
.spot-panel {
|
|
position: absolute;
|
|
bottom: 24px;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
width: min(420px, calc(100vw - 32px));
|
|
background: #fffbf0;
|
|
border: 3px solid #333;
|
|
border-radius: 20px;
|
|
padding: 20px;
|
|
color: #1a2a1a;
|
|
box-shadow: 5px 5px 0px #333;
|
|
z-index: 10;
|
|
font-family: 'Fredoka', sans-serif;
|
|
}
|
|
|
|
.spot-panel__close {
|
|
position: absolute;
|
|
top: 12px;
|
|
right: 12px;
|
|
background: none;
|
|
border: 2px solid #333;
|
|
border-radius: 8px;
|
|
color: #333;
|
|
font-size: 14px;
|
|
cursor: pointer;
|
|
padding: 2px 7px;
|
|
font-weight: bold;
|
|
box-shadow: 2px 2px 0 #333;
|
|
transition: transform .1s, box-shadow .1s;
|
|
}
|
|
.spot-panel__close:hover {
|
|
transform: translate(-1px, -1px);
|
|
box-shadow: 3px 3px 0 #333;
|
|
}
|
|
.spot-panel__close:active {
|
|
transform: translate(1px, 1px);
|
|
box-shadow: 1px 1px 0 #333;
|
|
}
|
|
|
|
.spot-panel__header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
margin-bottom: 14px;
|
|
}
|
|
|
|
.spot-panel__icon { font-size: 28px; }
|
|
.spot-panel__name { margin: 0; font-size: 19px; font-weight: 600; font-family: 'Fredoka One', cursive; color: #1a1a2e; }
|
|
.spot-panel__region { margin: 2px 0 0; font-size: 13px; color: #555; }
|
|
|
|
/* Horizon label */
|
|
.spot-panel__horizon-label {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
color: #555;
|
|
margin-bottom: 10px;
|
|
text-transform: uppercase;
|
|
letter-spacing: .05em;
|
|
}
|
|
.spot-panel__confidence { font-weight: 400; color: #888; }
|
|
|
|
/* Score gauge */
|
|
.spot-panel__score { margin-bottom: 14px; }
|
|
|
|
.spot-panel__gauge {
|
|
padding: 14px 16px 12px;
|
|
border-radius: 14px;
|
|
margin-bottom: 12px;
|
|
border: 2px solid rgba(0,0,0,0.15);
|
|
}
|
|
.gauge--low { background: #dcfce7; }
|
|
.gauge--medium { background: #fef9c3; }
|
|
.gauge--high { background: #fee2e2; }
|
|
|
|
.spot-panel__gauge-top {
|
|
display: flex;
|
|
align-items: baseline;
|
|
justify-content: space-between;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.spot-panel__gauge-label {
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
text-transform: uppercase;
|
|
letter-spacing: .07em;
|
|
}
|
|
.gauge--low .spot-panel__gauge-label { color: #16a34a; }
|
|
.gauge--medium .spot-panel__gauge-label { color: #d97706; }
|
|
.gauge--high .spot-panel__gauge-label { color: #dc2626; }
|
|
|
|
.spot-panel__gauge-score {
|
|
font-family: 'Fredoka One', cursive;
|
|
font-size: 32px;
|
|
font-weight: 400;
|
|
color: #1a1a2e;
|
|
line-height: 1;
|
|
}
|
|
.spot-panel__gauge-max {
|
|
font-size: 13px;
|
|
font-weight: 400;
|
|
color: #999;
|
|
margin-left: 2px;
|
|
font-family: 'Fredoka', sans-serif;
|
|
}
|
|
|
|
.spot-panel__gauge-track {
|
|
height: 6px;
|
|
background: rgba(0, 0, 0, 0.1);
|
|
border-radius: 3px;
|
|
overflow: hidden;
|
|
border: 1px solid rgba(0,0,0,0.1);
|
|
}
|
|
.spot-panel__gauge-fill {
|
|
height: 100%;
|
|
border-radius: 3px;
|
|
transition: width .6s cubic-bezier(0.4, 0, 0.2, 1);
|
|
}
|
|
.gauge--low .spot-panel__gauge-fill { background: #22c55e; }
|
|
.gauge--medium .spot-panel__gauge-fill { background: #eab308; }
|
|
.gauge--high .spot-panel__gauge-fill { background: #ef4444; }
|
|
|
|
/* Trend */
|
|
.spot-panel__trend {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 9px 14px;
|
|
border-radius: 12px;
|
|
border: 2px solid rgba(0,0,0,0.12);
|
|
margin-bottom: 12px;
|
|
font-weight: 600;
|
|
font-size: 14px;
|
|
}
|
|
.trend--bad { background: #fee2e2; color: #b91c1c; }
|
|
.trend--neutral { background: #f1f5f9; color: #475569; }
|
|
.trend--good { background: #dcfce7; color: #15803d; }
|
|
|
|
.spot-panel__trend-icon { font-size: 18px; line-height: 1; }
|
|
.spot-panel__trend-label { font-family: 'Fredoka', sans-serif; }
|
|
|
|
/* Details */
|
|
.spot-panel__details {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 4px 12px;
|
|
font-size: 13px;
|
|
margin: 0;
|
|
}
|
|
.spot-panel__details dt { color: #777; }
|
|
.spot-panel__details dd { margin: 0; font-weight: 600; color: #1a1a2e; }
|
|
|
|
.spot-panel__loading,
|
|
.spot-panel__no-data,
|
|
.spot-panel__error { font-size: 14px; text-align: center; padding: 12px 0; color: #777; }
|
|
.spot-panel__error { color: #dc2626; }
|
|
|
|
/* Feedback */
|
|
.spot-panel__feedback {
|
|
border-top: 2px solid #e5e7eb;
|
|
padding-top: 14px;
|
|
text-align: center;
|
|
}
|
|
.spot-panel__feedback p { margin: 0 0 10px; font-size: 13px; color: #555; }
|
|
|
|
.spot-panel__feedback-btns {
|
|
display: flex;
|
|
gap: 8px;
|
|
justify-content: center;
|
|
}
|
|
.spot-panel__feedback-btns button {
|
|
flex: 1;
|
|
padding: 8px 12px;
|
|
border: 2px solid #333;
|
|
border-radius: 10px;
|
|
background: #f1f5f9;
|
|
color: #1a1a2e;
|
|
font-family: 'Fredoka', sans-serif;
|
|
font-size: 13px;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
box-shadow: 2px 2px 0 #333;
|
|
transition: transform .1s, box-shadow .1s;
|
|
}
|
|
.spot-panel__feedback-btns button:hover:not(:disabled) {
|
|
transform: translate(-1px, -1px);
|
|
box-shadow: 3px 3px 0 #333;
|
|
}
|
|
.spot-panel__feedback-btns button:active:not(:disabled) {
|
|
transform: translate(1px, 1px);
|
|
box-shadow: 1px 1px 0 #333;
|
|
}
|
|
.spot-panel__feedback-btns button:disabled { opacity: .5; cursor: default; }
|
|
|
|
.spot-panel__feedback-thanks {
|
|
text-align: center;
|
|
color: #16a34a;
|
|
font-size: 14px;
|
|
font-weight: 600;
|
|
margin: 0;
|
|
padding-top: 14px;
|
|
border-top: 2px solid #e5e7eb;
|
|
}
|
|
|
|
/* Push */
|
|
.spot-panel__push {
|
|
border-top: 2px solid #e5e7eb;
|
|
padding-top: 12px;
|
|
text-align: center;
|
|
}
|
|
.spot-panel__push-btn {
|
|
width: 100%;
|
|
padding: 9px 16px;
|
|
border: 2px solid #333;
|
|
border-radius: 10px;
|
|
background: #f1f5f9;
|
|
color: #555;
|
|
font-family: 'Fredoka', sans-serif;
|
|
font-size: 13px;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
box-shadow: 2px 2px 0 #333;
|
|
transition: transform .1s, box-shadow .1s;
|
|
}
|
|
.spot-panel__push-btn:hover:not(:disabled) {
|
|
transform: translate(-1px, -1px);
|
|
box-shadow: 3px 3px 0 #333;
|
|
color: #1a1a2e;
|
|
}
|
|
.spot-panel__push-btn--active { border-color: #0ea5e9; color: #0284c7; background: #e0f2fe; }
|
|
.spot-panel__push-btn:disabled { opacity: .5; cursor: default; }
|
|
.spot-panel__push-error { color: #dc2626; font-size: 12px; margin-top: 6px; }
|
|
|
|
/* ── Mobile ── */
|
|
@media (max-width: 480px) {
|
|
.spot-panel {
|
|
bottom: 0;
|
|
left: 0;
|
|
right: 0;
|
|
transform: none;
|
|
width: 100%;
|
|
border-radius: 20px 20px 0 0;
|
|
max-height: 70vh;
|
|
overflow-y: auto;
|
|
}
|
|
.spot-panel__feedback-btns { flex-direction: column; }
|
|
.spot-panel__details { grid-template-columns: 1fr; }
|
|
}
|