/
spider0
/
Spider0
Обзор
Документация
Войти
/
spider0
/
Spider0
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/index.css
2 266 строк
40 KB
AlexSpider0686
Add AI survey refinements and spec export
29 мар 2026, 16:08
29 мар 2026, 16:08
09f7428
Код
Авторство
О чём код?
:root { color-scheme: light; --bg: #edf3fb; --bg2: #f7faff; --line: rgba(155, 176, 208, 0.35); --text: #213b57; --muted: #6f8399; --accent: #2f7ff1; --accent2: #17a9d7; --danger: #dc2626; --shadow: 0 8px 22px rgba(53, 81, 128, 0.12); --shadow-soft: 0 4px 12px rgba(53, 81, 128, 0.08); } * { box-sizing: border-box; } html, body, #root { min-height: 100%; } body { margin: 0; font-family: "Manrope", "Segoe UI", Arial, sans-serif; color: var(--text); background: radial-gradient(circle at top left, rgba(59, 130, 246, 0.15), transparent 36%), radial-gradient(circle at top right, rgba(23, 169, 215, 0.1), transparent 30%), linear-gradient(180deg, #f4f8ff 0%, #edf3fb 42%, #e8eef8 100%); } button, input, select { font: inherit; } .page-shell { position: relative; padding: 18px 22px 32px; z-index: 0; min-height: 100vh; isolation: isolate; background: radial-gradient(circle at top left, rgba(59, 130, 246, 0.14), transparent 34%), radial-gradient(circle at top right, rgba(23, 169, 215, 0.1), transparent 28%), linear-gradient(180deg, #f4f8ff 0%, #edf3fb 42%, #e8eef8 100%); } .bg-video-layer { position: fixed; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; background: radial-gradient(circle at 20% 15%, rgba(27, 91, 157, 0.22), transparent 40%), radial-gradient(circle at 80% 20%, rgba(22, 146, 188, 0.2), transparent 38%), linear-gradient(180deg, #eaf1fb 0%, #e4edf8 100%); } .bg-video-layer::before { content: ""; position: absolute; inset: -20%; z-index: 3; background: radial-gradient(circle at 15% 20%, rgba(16, 149, 165, 0.3), transparent 35%), radial-gradient(circle at 75% 30%, rgba(53, 122, 189, 0.24), transparent 35%), radial-gradient(circle at 55% 75%, rgba(106, 70, 199, 0.18), transparent 40%); animation: sky-pan 32s linear infinite alternate; } .bg-video-layer::after { content: ""; position: absolute; inset: 0; z-index: 4; background: radial-gradient(circle at 15% 15%, rgba(255, 255, 255, 0.22), transparent 38%), radial-gradient(circle at 85% 65%, rgba(126, 167, 230, 0.22), transparent 36%), rgba(233, 241, 252, 0.62); animation: mist-drift 26s ease-in-out infinite alternate; } .bg-video-layer video { position: absolute; inset: 0; z-index: 2; display: block; width: 100%; height: 100%; object-fit: cover; filter: saturate(0.95) contrast(0.95) brightness(1.05); transform: scale(1.04); opacity: 0; transition: opacity 0.45s ease; } .bg-video-layer video.is-ready { opacity: 0.78; } .bg-video-fallback { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; background: radial-gradient(circle at 22% 18%, rgba(47, 127, 241, 0.28), transparent 38%), radial-gradient(circle at 78% 26%, rgba(20, 154, 203, 0.24), transparent 34%), linear-gradient(160deg, rgba(226, 237, 251, 0.92), rgba(210, 226, 247, 0.92)); animation: sky-pan 24s linear infinite alternate; } .ai-survey-summary-grid, .ai-configurator-influences { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; } .ai-system-registry__grid, .ai-photo-prompt-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .ai-system-registry__item, .ai-photo-card { border: 1px solid rgba(141, 163, 196, 0.28); border-radius: 14px; padding: 12px; background: rgba(255, 255, 255, 0.72); box-shadow: var(--shadow-soft); } .ai-system-registry__item.active { border-color: rgba(47, 127, 241, 0.42); background: linear-gradient(180deg, rgba(244, 250, 255, 0.95), rgba(236, 244, 255, 0.88)); } .ai-system-toggle, .ai-working-docs { display: flex; align-items: flex-start; gap: 10px; } .ai-system-toggle strong, .ai-photo-card__head strong { display: block; margin-bottom: 4px; } .ai-system-toggle small, .ai-photo-card__head span, .ai-inline-mark { color: var(--muted); } .ai-working-docs { margin-top: 10px; padding-top: 10px; border-top: 1px solid rgba(141, 163, 196, 0.22); } .ai-working-docs.disabled { opacity: 0.55; } .ai-readiness-list { display: grid; gap: 6px; margin-top: 8px; } .ai-readiness-item { display: block; } .ai-checklist-sections { display: grid; gap: 14px; margin-top: 14px; } .ai-checklist-section__head, .ai-configurator-card__head, .ai-photo-card__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } .ai-checklist-section__head { flex-wrap: wrap; } .ai-checklist-reset-btn { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; } .ai-photo-refresh-btn { display: inline-flex; align-items: center; gap: 6px; } .ai-photo-card__head { flex-wrap: wrap; } .ai-photo-card__head .file-upload-btn, .ai-photo-refresh-btn { min-height: 34px; min-width: 118px; justify-content: center; padding: 8px 12px; font-size: 12px; line-height: 1.15; white-space: nowrap; } .ai-checklist-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 12px; } .ai-checklist-question label { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; } .ai-checklist-question.disabled { opacity: 0.62; } .ai-checklist-question.disabled input { background: rgba(226, 232, 240, 0.55); } .ai-mount-limit-control { display: grid; gap: 8px; } .ai-mount-limit-toggle { display: inline-flex; align-items: center; gap: 8px; color: var(--muted); font-size: 12px; } .ai-inline-mark { display: inline-flex; align-items: center; justify-content: center; min-width: 26px; height: 20px; padding: 0 8px; border-radius: 999px; background: rgba(47, 127, 241, 0.12); color: #195fc5; font-size: 11px; font-weight: 700; } .ai-checklist-bool, .ai-checklist-chips, .ai-detection-list, .ai-configurator-badges, .ai-summary-list { display: flex; flex-wrap: wrap; gap: 8px; } .chip-btn { border: 1px solid rgba(141, 163, 196, 0.34); background: rgba(255, 255, 255, 0.9); border-radius: 999px; padding: 8px 12px; color: var(--text); cursor: pointer; transition: 0.2s ease; } .chip-btn.active { background: linear-gradient(180deg, #2f7ff1, #17a9d7); border-color: transparent; color: #fff; } .ai-photo-prompt-block, .ai-configurator-card { margin-top: 14px; } .ai-summary-list { margin-top: 12px; display: grid; } .ai-summary-list > div { display: flex; align-items: flex-start; gap: 8px; } .ai-summary-list svg { color: #1f8f5f; margin-top: 2px; flex: 0 0 auto; } .ai-configurator-table input { width: 90px; } .ai-survey-modal { position: fixed; inset: 0; z-index: 40; display: flex; align-items: center; justify-content: center; padding: 20px; } .ai-survey-modal.ai-survey-modal--inline { position: relative; inset: auto; z-index: auto; display: block; padding: 0; margin-top: 12px; } .ai-survey-modal__backdrop { position: absolute; inset: 0; background: rgba(226, 236, 248, 0.9); pointer-events: auto; } .ai-survey-modal--inline .ai-survey-modal__backdrop { display: none; } .ai-survey-modal__card { position: relative; z-index: 1; width: min(1120px, 96vw); max-height: calc(100vh - 40px); overflow: hidden; display: flex; flex-direction: column; border-radius: 18px; padding: 18px; border: 1px solid rgba(141, 163, 196, 0.38); box-shadow: 0 22px 56px rgba(37, 73, 121, 0.22); background: linear-gradient(180deg, rgba(255, 255, 255, 0.99), rgba(245, 250, 255, 0.98)); color: #173a60; isolation: isolate; will-change: opacity; } .ai-survey-modal--inline .ai-survey-modal__card { width: 100%; max-height: none; min-height: 0; box-shadow: var(--shadow); } .ai-survey-modal__card[data-refresh-tick="1"], .ai-survey-modal__body[data-refresh-tick="1"] { transform: translateZ(0); } .ai-survey-modal__card[data-refresh-tick="0"], .ai-survey-modal__body[data-refresh-tick="0"] { transform: translateZ(0.001px); } .ai-survey-modal__header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 14px; } .ai-survey-modal__header h3 { margin: 0 0 6px; color: #173a60; } .ai-survey-modal__header p { margin: 0; color: #4d6784; max-width: 760px; } .ai-survey-modal__close { white-space: nowrap; } .ai-survey-modal__body { overflow: auto; padding-right: 4px; color: #173a60; } .ai-survey-modal__footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 16px; padding-top: 14px; padding-bottom: 2px; background: rgba(245, 250, 255, 0.99); border-top: 1px solid rgba(141, 163, 196, 0.24); flex: 0 0 auto; } .ai-survey-modal__footer .hint-inline { max-width: 720px; color: #4d6784; } .ai-photo-card__loading { display: block; margin-top: 6px; color: #24527f; font-weight: 600; } .ai-survey-modal .calc-explain, .ai-survey-modal .ai-checklist-section, .ai-survey-modal .input-card, .ai-survey-modal .ai-photo-card { background: rgba(255, 255, 255, 0.96); } .ai-survey-modal .hint-inline, .ai-survey-modal .input-card label, .ai-survey-modal .ai-photo-card__head span, .ai-survey-modal .ai-system-toggle small, .ai-survey-modal .ai-inline-mark { color: #58708b; } .ai-survey-modal .calc-explain h4, .ai-survey-modal .input-card strong, .ai-survey-modal .ai-photo-card__head strong { color: #173a60; } body.ai-survey-open .primary-btn, body.ai-survey-open .ghost-btn, body.ai-survey-open .danger-btn, body.ai-survey-open .step-chip, body.ai-survey-open .lock-btn, body.ai-survey-open .region-option, body.ai-survey-open .file-upload-btn, body.ai-survey-open .object-photo-card { animation: none !important; } @keyframes sky-pan { 0% { transform: translate3d(-4%, -2%, 0) scale(1); } 50% { transform: translate3d(3%, 2%, 0) scale(1.06); } 100% { transform: translate3d(6%, -3%, 0) scale(1.03); } } @keyframes mist-drift { 0% { transform: translate3d(-2%, 0, 0) scale(1); opacity: 0.88; } 50% { transform: translate3d(2%, -1%, 0) scale(1.04); opacity: 0.78; } 100% { transform: translate3d(4%, 1%, 0) scale(1.02); opacity: 0.9; } } .build-badge { position: fixed; top: 12px; left: 12px; z-index: 20; font-size: 11px; font-weight: 700; color: #0f3f79; background: rgba(255, 255, 255, 0.92); border: 1px solid rgba(47, 127, 241, 0.35); border-radius: 999px; padding: 4px 10px; box-shadow: var(--shadow-soft); } .app-wrap { position: relative; z-index: 5; max-width: 820px; margin: 0 auto; display: grid; gap: 10px; } .app-wrap.locked { pointer-events: none; user-select: none; opacity: 0.72; filter: none; } .auth-overlay { position: fixed; inset: 0; z-index: 30; display: flex; align-items: center; justify-content: center; padding: 20px; } .auth-overlay::before { content: ""; position: absolute; inset: 0; background: rgba(229, 238, 250, 0.88); } .auth-card { position: relative; z-index: 1; width: min(560px, 94vw); border-radius: 16px; padding: 18px; border: 1px solid rgba(141, 163, 196, 0.4); box-shadow: 0 16px 36px rgba(37, 73, 121, 0.22); background: #ffffff; } .auth-kicker { font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; color: #2f7ff1; font-weight: 700; margin-bottom: 6px; } .auth-card h2 { margin: 0 0 4px; font-size: 24px; line-height: 1.2; } .auth-card p { margin: 0; color: var(--muted); font-size: 12px; } .auth-email-row { margin-top: 14px; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; } .auth-email-field { display: flex; align-items: center; gap: 8px; border: 1px solid rgba(141, 163, 196, 0.35); border-radius: 10px; padding: 8px 10px; background: rgba(255, 255, 255, 0.9); } .auth-email-field svg { color: var(--muted); } .auth-email-field input { border: 0; outline: none; background: transparent; color: var(--text); width: 100%; } .auth-code-block { margin-top: 14px; display: grid; gap: 8px; } .auth-code-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .auth-code-header span { color: var(--text); font-size: 12px; font-weight: 600; } .auth-code-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; } .auth-code-cell { height: 48px; border-radius: 10px; border: 1px solid rgba(141, 163, 196, 0.42); background: rgba(255, 255, 255, 0.92); text-align: center; font-size: 20px; font-weight: 700; color: var(--text); outline: none; } .auth-code-cell:focus { border-color: rgba(47, 127, 241, 0.8); box-shadow: 0 0 0 2px rgba(47, 127, 241, 0.18); } .auth-hint, .auth-error { margin-top: 10px; } .hero-card, .stepper-card, .panel, .system-card, .metric-card { background: #ffffff; border: 1px solid var(--line); box-shadow: var(--shadow); border-radius: 14px; } .hero-card, .stepper-card, .panel { padding: 10px; } .hero-card { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; } .hero-kicker { font-size: 9px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--accent); margin-bottom: 4px; font-weight: 700; } .hero-card h1, .panel h2, .subpanel h3 { margin: 0; } .hero-card h1 { font-size: 20px; line-height: 1.2; margin-bottom: 4px; } .hero-card p, .panel-header p, .subpanel-header p, .system-title p { margin: 0; color: var(--muted); line-height: 1.35; font-size: 11px; } .stepper-card { display: flex; justify-content: space-between; gap: 10px; align-items: center; flex-wrap: wrap; } .stepper { display: flex; gap: 8px; flex-wrap: wrap; } .step-chip { border: 1px solid rgba(148, 163, 184, 0.35); background: linear-gradient(180deg, #ffffff, #eef6ff); color: var(--text); border-radius: 10px; padding: 6px 8px; display: inline-flex; align-items: center; gap: 6px; cursor: pointer; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9), var(--shadow-soft); transition: 0.2s ease; font-size: 11px; font-weight: 600; } .step-chip:hover { transform: translateY(-1px); } .step-chip.active, .step-chip.done { border-color: rgba(47, 127, 241, 0.5); background: linear-gradient(135deg, rgba(47, 127, 241, 0.12), rgba(23, 169, 215, 0.14), rgba(255, 255, 255, 0.95)); } .step-icon { width: 20px; height: 20px; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; background: linear-gradient(135deg, rgba(47, 127, 241, 0.15), rgba(23, 169, 215, 0.18)); } .step-actions { display: flex; gap: 6px; } .primary-btn, .ghost-btn, .danger-btn { border: 0; border-radius: 9px; padding: 6px 10px; display: inline-flex; align-items: center; gap: 6px; cursor: pointer; transition: 0.2s ease; box-shadow: var(--shadow-soft); font-size: 10px; font-weight: 600; line-height: 1.1; } .primary-btn, .ghost-btn, .danger-btn, .step-chip, .lock-btn, .region-option, .file-upload-btn, .object-photo-card { position: relative; overflow: hidden; transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease, filter 0.22s ease, background 0.22s ease; animation: btn-breathe 4.2s ease-in-out infinite; } .primary-btn::after, .ghost-btn::after, .danger-btn::after, .step-chip::after, .lock-btn::after, .region-option::after, .file-upload-btn::after { content: ""; position: absolute; top: 0; left: -140%; width: 42%; height: 100%; transform: skewX(-20deg); background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.42), transparent); pointer-events: none; opacity: 0; } .primary-btn:hover::after, .ghost-btn:hover::after, .danger-btn:hover::after, .step-chip:hover::after, .lock-btn:hover::after, .region-option:hover::after, .file-upload-btn:hover::after { opacity: 1; animation: btn-sheen 0.72s ease; } .primary-btn:hover, .ghost-btn:hover, .danger-btn:hover, .step-chip:hover, .lock-btn:hover, .region-option:hover, .file-upload-btn:hover, .object-photo-card:hover { transform: translateY(-1px); box-shadow: 0 10px 24px rgba(37, 74, 123, 0.2); } .primary-btn:active, .ghost-btn:active, .danger-btn:active, .step-chip:active, .lock-btn:active, .region-option:active, .file-upload-btn:active, .object-photo-card:active { transform: translateY(0) scale(0.985); } .primary-btn:disabled, .ghost-btn:disabled, .danger-btn:disabled, .step-chip:disabled, .lock-btn:disabled, .region-option:disabled { animation: none; } .primary-btn { color: #ffffff; background: linear-gradient(135deg, var(--accent), var(--accent2)); } .ghost-btn { color: var(--text); background: linear-gradient(180deg, #ffffff, #eef5ff); border: 1px solid rgba(141, 163, 196, 0.35); } .danger-btn { color: #ffffff; background: linear-gradient(135deg, #ef4444, #dc2626); } .danger-btn:disabled, .primary-btn:disabled, .ghost-btn:disabled { opacity: 0.55; cursor: not-allowed; } .panel-header, .subpanel-header { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; } .grid-two, .grid-three, .zone-grid, .summary-grid { display: grid; gap: 8px; } .object-top-grid { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 8px; margin-bottom: 8px; } .object-side-stack { display: grid; gap: 8px; } .grid-two { grid-template-columns: repeat(2, minmax(0, 1fr)); } .grid-three { grid-template-columns: repeat(3, minmax(0, 1fr)); } .zone-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } .compact-zone-grid { margin-top: 8px; } .input-card { display: flex; flex-direction: column; gap: 6px; padding: 8px; border-radius: 8px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(242, 248, 255, 0.9)); border: 1px solid rgba(141, 163, 196, 0.28); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.95), var(--shadow-soft); } .input-card.full { grid-column: 1 / -1; } .input-card label { font-size: 9px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted); font-weight: 700; } .label-with-tooltip { position: relative; display: flex; align-items: center; gap: 6px; } .label-with-tooltip label { margin: 0; } .label-tooltip-help { width: 18px; height: 18px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; border: 1px solid rgba(47, 127, 241, 0.45); background: rgba(226, 239, 255, 0.95); color: #0f3f79; font-size: 11px; font-weight: 700; cursor: help; user-select: none; } .label-tooltip-popover { position: absolute; left: 0; top: calc(100% + 6px); width: min(460px, 82vw); max-height: min(360px, 70vh); overflow-y: auto; border: 1px solid rgba(141, 163, 196, 0.32); border-radius: 10px; background: rgba(233, 244, 255, 0.9); backdrop-filter: blur(8px); box-shadow: var(--shadow); padding: 8px; display: none; z-index: 8; } .label-tooltip-popover p { margin: 0 0 6px; color: var(--text); font-size: 11px; line-height: 1.35; } .label-tooltip-popover p:last-child { margin-bottom: 0; } .label-with-tooltip:hover .label-tooltip-popover, .label-with-tooltip:focus-within .label-tooltip-popover { display: block; } .protected-area-explain { position: relative; display: flex; align-items: center; gap: 6px; margin-top: 6px; color: var(--muted); font-size: 10px; line-height: 1.35; } .protected-area-explain-text { text-decoration: underline; text-decoration-style: dotted; text-underline-offset: 2px; } .protected-area-popover { position: absolute; left: 0; top: calc(100% + 6px); width: min(520px, 86vw); max-height: min(360px, 70vh); overflow-y: auto; border: 1px solid rgba(141, 163, 196, 0.32); border-radius: 10px; background: rgba(233, 244, 255, 0.95); backdrop-filter: blur(8px); box-shadow: var(--shadow); padding: 8px; display: none; z-index: 8; } .protected-area-popover p { margin: 0 0 6px; color: var(--text); font-size: 11px; line-height: 1.35; } .protected-area-popover p:last-child { margin-bottom: 0; } .protected-area-explain:hover .protected-area-popover, .protected-area-explain:focus-within .protected-area-popover { display: block; } .object-type-wrap { position: relative; display: grid; align-items: center; } .object-type-wrap select { width: 100%; padding-right: 34px; } .object-type-help { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; color: #0f3f79; background: rgba(226, 239, 255, 0.95); border: 1px solid rgba(47, 127, 241, 0.45); pointer-events: none; } .object-type-tooltip { position: absolute; left: 0; top: calc(100% + 6px); width: min(520px, 78vw); max-height: 220px; overflow: auto; border-radius: 10px; border: 1px solid rgba(141, 163, 196, 0.32); background: rgba(233, 244, 255, 0.88); backdrop-filter: blur(8px); box-shadow: var(--shadow); padding: 8px; display: none; z-index: 5; } .object-type-tooltip p { margin: 0 0 6px; font-size: 11px; color: var(--text); line-height: 1.35; } .object-type-tooltip p:last-child { margin-bottom: 0; } .object-type-wrap:hover .object-type-tooltip { display: block; } .object-photo-gallery { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } .object-photo-card { position: relative; height: 128px; border: 1px solid rgba(141, 163, 196, 0.32); border-radius: 10px; overflow: hidden; background: #ffffff; padding: 0; text-align: left; cursor: pointer; box-shadow: var(--shadow-soft); } .object-photo-card img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.02); transition: transform 0.25s ease; } .object-photo-overlay { position: absolute; inset: auto 0 0 0; display: grid; gap: 2px; padding: 8px; background: linear-gradient(180deg, rgba(12, 35, 61, 0.05) 0%, rgba(12, 35, 61, 0.82) 100%); color: #eef5ff; } .object-photo-overlay strong { font-size: 11px; line-height: 1.2; } .object-photo-overlay span { font-size: 9px; line-height: 1.25; color: rgba(230, 240, 255, 0.9); max-height: 32px; overflow: hidden; } .object-photo-card:hover img { transform: scale(1.07); } .object-photo-card.active { border-color: rgba(47, 127, 241, 0.7); box-shadow: 0 0 0 1px rgba(47, 127, 241, 0.25), var(--shadow); } .input-card input, .input-card select { border: 1px solid rgba(141, 163, 196, 0.4); background: rgba(255, 255, 255, 0.92); color: var(--text); border-radius: 8px; padding: 7px 9px; outline: none; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.95); font-size: 11px; } .hint-inline { color: var(--muted); font-size: 10px; line-height: 1.35; } .subpanel { margin-top: 10px; padding: 10px; border-radius: 10px; background: linear-gradient(180deg, rgba(246, 250, 255, 0.9), rgba(236, 245, 255, 0.8)); border: 1px solid rgba(141, 163, 196, 0.25); } .stack { display: grid; gap: 8px; } .slider-stack { display: grid; gap: 8px; } .preset-row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; } .slider-card { border: 1px solid rgba(141, 163, 196, 0.25); border-radius: 8px; padding: 8px; background: rgba(255, 255, 255, 0.85); } .slider-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; font-size: 11px; } .slider-title { display: flex; align-items: center; gap: 8px; } .slider-header span { color: #2459a9; font-weight: 700; } .lock-btn { border: 1px solid rgba(141, 163, 196, 0.35); border-radius: 999px; background: rgba(255, 255, 255, 0.9); color: var(--muted); padding: 3px 8px; font-size: 11px; display: inline-flex; align-items: center; gap: 4px; cursor: pointer; } .lock-btn.locked { color: #0f3f79; border-color: rgba(47, 127, 241, 0.5); background: rgba(219, 234, 254, 0.8); } .zone-slider { width: 100%; appearance: none; height: 4px; border-radius: 999px; background: linear-gradient(90deg, #3b82f6 0%, #06b6d4 50%, #5b7dff 100%); outline: none; } .zone-slider::-webkit-slider-thumb { appearance: none; width: 10px; height: 10px; border-radius: 50%; background: #ffffff; border: 2px solid #2459a9; box-shadow: 0 1px 4px rgba(36, 89, 169, 0.3); cursor: pointer; } .zone-slider::-moz-range-thumb { width: 10px; height: 10px; border-radius: 50%; background: #ffffff; border: 2px solid #2459a9; box-shadow: 0 1px 4px rgba(36, 89, 169, 0.3); cursor: pointer; } .slider-total { color: var(--muted); font-size: 11px; } .warn-inline { color: #dc2626; font-weight: 700; } .region-search-row { display: flex; align-items: center; gap: 8px; border: 1px solid rgba(141, 163, 196, 0.35); border-radius: 8px; padding: 0 8px; background: rgba(255, 255, 255, 0.92); } .region-search-row input { border: 0; box-shadow: none; background: transparent; width: 100%; padding: 7px 0; } .region-select-grid { margin-top: 8px; display: grid; gap: 6px; grid-template-columns: repeat(2, minmax(0, 1fr)); max-height: 150px; overflow: auto; } .region-option { border: 1px solid rgba(141, 163, 196, 0.35); background: #ffffff; color: var(--text); border-radius: 8px; padding: 6px 8px; display: flex; justify-content: space-between; gap: 8px; cursor: pointer; font-size: 10px; text-align: left; } .region-option.active { border-color: rgba(47, 127, 241, 0.55); background: rgba(226, 239, 255, 0.95); } .system-card { padding: 10px; } .system-title { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; } .system-title h3 { margin: 0 0 4px; font-size: 13px; } .system-badge { width: 26px; height: 26px; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; color: #0f3f79; background: linear-gradient(135deg, rgba(47, 127, 241, 0.18), rgba(23, 169, 215, 0.18)); } .system-main-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; } .system-main-grid-wide { grid-template-columns: 1.2fr 1fr; } .system-control-card { padding: 10px; } .system-control-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } .input-card.compact { padding: 7px; } .vendor-hint { border: 1px solid rgba(141, 163, 196, 0.22); border-radius: 8px; padding: 8px; background: rgba(236, 246, 255, 0.75); display: grid; gap: 4px; } .vendor-hint p { margin: 0; color: var(--muted); font-size: 11px; } .readonly-field { color: #12395e; font-weight: 700; background: rgba(239, 246, 255, 0.96) !important; } .address-card { min-height: 100%; } .address-actions { display: grid; gap: 6px; margin-top: 2px; } .address-status { margin-top: 2px; font-size: 10px; line-height: 1.4; color: var(--muted); } .address-status.success { color: #166534; font-weight: 600; } .address-status.error { color: #b91c1c; font-weight: 600; } .verified-address-card { margin-top: 6px; display: block; padding: 8px; border-radius: 10px; border: 1px solid rgba(141, 163, 196, 0.3); background: linear-gradient(180deg, rgba(242, 248, 255, 0.94), rgba(233, 243, 255, 0.88)); } .verified-address-card__body { display: grid; gap: 5px; align-content: start; } .verified-address-card__body strong { font-size: 12px; line-height: 1.3; color: #12395e; } .verified-address-card__body span { font-size: 10px; line-height: 1.4; color: var(--muted); } .vendor-hint-lg { padding: 10px; gap: 8px; } .vendor-hint-top { display: grid; gap: 4px; } .vendor-kpi { font-size: 12px; color: #2a4f79; } .vendor-kpi strong { font-size: 14px; color: #12395e; } .vendor-hint-mid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; } .vendor-hint-mid > div { border: 1px solid rgba(141, 163, 196, 0.28); border-radius: 8px; background: rgba(255, 255, 255, 0.86); padding: 7px; display: grid; gap: 2px; } .vendor-hint-mid span { color: var(--muted); font-size: 10px; } .vendor-hint-mid strong { font-size: 13px; color: #11365a; } .vendor-hint-footer { display: grid; gap: 4px; } .vendor-hint-footer p { font-size: 10px; } .spin { animation: spin 1s linear infinite; } .pricing-caption { margin-top: 6px; margin-bottom: 6px; font-size: 11px; color: var(--muted); } .pricing-source-row { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 4px; } .pricing-source-chip { display: inline-flex; align-items: center; gap: 4px; border-radius: 999px; border: 1px solid rgba(140, 162, 194, 0.35); background: rgba(238, 247, 255, 0.85); color: #315679; padding: 3px 8px; font-size: 10px; line-height: 1.2; } .pricing-source-chip strong { font-size: 10px; color: #1b3f63; } .pricing-source-chip.ok { background: rgba(34, 197, 94, 0.12); border-color: rgba(34, 197, 94, 0.25); color: #166534; } .pricing-source-chip.warn { background: rgba(245, 158, 11, 0.16); border-color: rgba(180, 83, 9, 0.28); color: #9a3412; } .pricing-source-chip.muted { background: rgba(100, 116, 139, 0.13); border-color: rgba(71, 85, 105, 0.26); color: #334155; } .pricing-chip-tooltip { position: relative; display: inline-flex; } .pricing-chip-popover { position: absolute; left: 0; top: calc(100% + 6px); min-width: 240px; max-width: min(360px, 72vw); padding: 10px 12px; border-radius: 12px; border: 1px solid rgba(122, 154, 193, 0.3); background: rgba(15, 23, 42, 0.94); color: #e2ecff; box-shadow: 0 14px 28px rgba(15, 23, 42, 0.2); font-size: 12px; line-height: 1.45; z-index: 20; opacity: 0; visibility: hidden; transform: translateY(-4px); transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s ease; pointer-events: none; } .pricing-chip-tooltip:hover .pricing-chip-popover, .pricing-chip-tooltip:focus-within .pricing-chip-popover { opacity: 1; visibility: visible; transform: translateY(0); } .work-cost-popover { left: auto; right: 0; min-width: 420px; max-width: min(620px, 88vw); max-height: min(70vh, 420px); overflow-y: auto; display: grid; gap: 8px; white-space: normal; } .work-cost-popover__section { display: grid; gap: 3px; } .work-cost-popover__section strong { color: #ffffff; font-size: 12px; } .work-cost-popover__section span { color: #d7e6ff; font-size: 11px; line-height: 1.45; } .work-cost-popover__section--accent { padding-top: 8px; border-top: 1px solid rgba(226, 236, 255, 0.16); } .equipment-config { border: 1px solid rgba(141, 163, 196, 0.22); border-radius: 8px; padding: 8px; background: rgba(247, 251, 255, 0.9); } .equipment-header { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 8px; } .equipment-config-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } .equipment-config-grid.is-disabled { opacity: 0.62; } .system-subgrid { margin-top: 8px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .calc-explain { border: 1px solid rgba(141, 163, 196, 0.22); border-radius: 8px; padding: 8px; background: rgba(255, 255, 255, 0.85); } .calc-explain h4 { margin: 0 0 8px; font-size: 12px; } .coeff-list { display: grid; gap: 6px; } .coeff-item { border: 1px solid rgba(141, 163, 196, 0.2); border-radius: 8px; padding: 7px; background: rgba(247, 251, 255, 0.86); } .coeff-head { display: flex; justify-content: space-between; gap: 8px; align-items: center; font-size: 11px; } .coeff-item p, .coeff-item small { margin: 4px 0 0; color: var(--muted); font-size: 10px; } .table-wrap { overflow: auto; border-radius: 8px; border: 1px solid rgba(141, 163, 196, 0.3); background: rgba(255, 255, 255, 0.9); } .table-wrap.compact { max-height: 210px; } .aps-item-title { display: grid; gap: 2px; } .aps-item-title small { color: #5f7591; font-size: 10px; } .equipment-principles { margin-top: 6px; display: grid; gap: 6px; } .equipment-principles p { margin: 0; font-size: 10px; color: var(--muted); line-height: 1.35; } .table-edit-cell { display: flex; align-items: center; gap: 6px; } .table-number-input { width: 96px; border: 1px solid rgba(141, 163, 196, 0.45); border-radius: 6px; background: rgba(255, 255, 255, 0.96); color: var(--text); padding: 4px 6px; font-size: 11px; } .table-number-input:focus { outline: none; border-color: rgba(47, 127, 241, 0.8); box-shadow: 0 0 0 2px rgba(47, 127, 241, 0.16); } .table-action-btn { border: 1px solid rgba(220, 53, 69, 0.38); background: rgba(220, 53, 69, 0.1); color: #b91c1c; border-radius: 6px; padding: 4px 8px; font-size: 10px; font-weight: 600; cursor: pointer; } .table-action-btn:hover { background: rgba(220, 53, 69, 0.16); } .manual-item-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 8px; margin-top: 8px; } .manual-item-actions { display: flex; align-items: flex-end; justify-content: flex-start; } .manual-item-actions .primary-btn { width: 100%; justify-content: center; } .unit-audit-badge { display: inline-flex; align-items: center; border-radius: 999px; padding: 3px 8px; font-size: 10px; font-weight: 600; border: 1px solid transparent; white-space: nowrap; } .unit-audit-badge.match { background: rgba(34, 197, 94, 0.14); color: #166534; border-color: rgba(22, 101, 52, 0.25); } .unit-audit-badge.mismatch { background: rgba(245, 158, 11, 0.16); color: #92400e; border-color: rgba(146, 64, 14, 0.28); } .unit-audit-badge.unknown { background: rgba(71, 85, 105, 0.14); color: #334155; border-color: rgba(51, 65, 85, 0.3); } .aps-import-card { margin-top: 8px; } .aps-ops-card { margin-top: 8px; } .aps-ops-header { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .aps-import-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 8px; } .file-upload-btn { position: relative; } .file-upload-input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; } .action-cell { display: flex; justify-content: flex-end; margin-top: 8px; } .summary-grid { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin-bottom: 10px; } .logic-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .logic-card { border: 1px solid rgba(141, 163, 196, 0.26); border-radius: 10px; padding: 10px; background: linear-gradient(180deg, rgba(250, 253, 255, 0.95), rgba(241, 248, 255, 0.9)); box-shadow: var(--shadow-soft); } .logic-card h3 { margin: 0 0 8px; font-size: 13px; } .logic-card p { margin: 0 0 7px; color: var(--muted); font-size: 11px; line-height: 1.4; } .logic-card p:last-child { margin-bottom: 0; } .logic-totals { margin-top: 8px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; } .logic-totals > div, .logic-system-metrics > div { border: 1px solid rgba(141, 163, 196, 0.24); border-radius: 8px; padding: 7px; display: grid; gap: 4px; background: rgba(255, 255, 255, 0.85); } .logic-totals span, .logic-system-metrics span { font-size: 9px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; } .logic-totals strong, .logic-system-metrics strong { font-size: 12px; line-height: 1.2; } .logic-systems { margin-top: 10px; border-top: 1px solid rgba(141, 163, 196, 0.25); padding-top: 10px; } .logic-systems h3 { margin: 0 0 8px; font-size: 14px; } .logic-system-grid { display: grid; gap: 8px; } .logic-system-card { border: 1px solid rgba(141, 163, 196, 0.25); border-radius: 10px; padding: 10px; background: rgba(255, 255, 255, 0.86); } .logic-system-card h4 { margin: 0 0 6px; font-size: 13px; } .logic-system-card p { margin: 0 0 7px; color: var(--muted); font-size: 11px; line-height: 1.35; } .logic-system-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin-bottom: 7px; } .logic-equipment-list { display: grid; gap: 6px; } .logic-equipment-list p { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.35; } .design-note { margin-top: 10px; } .breakdown-metrics { margin-bottom: 12px; } .metric-card { padding: 8px; border-radius: 8px; display: flex; flex-direction: column; gap: 6px; box-shadow: var(--shadow-soft); } .metric-card span { color: var(--muted); font-size: 9px; } .metric-card strong { font-size: 14px; line-height: 1.15; } .metric-card.total { background: linear-gradient(135deg, rgba(47, 127, 241, 0.14), rgba(23, 169, 215, 0.16), rgba(255, 255, 255, 0.96)); } table { width: 100%; border-collapse: collapse; } thead th { text-align: left; padding: 8px; font-size: 9px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted); background: rgba(235, 244, 255, 0.9); } tbody td { padding: 8px; border-top: 1px solid rgba(141, 163, 196, 0.2); font-size: 11px; } tbody tr:hover { background: rgba(59, 130, 246, 0.05); } @keyframes btn-sheen { 0% { left: -140%; } 100% { left: 140%; } } @keyframes btn-breathe { 0%, 100% { filter: brightness(1); } 50% { filter: brightness(1.04); } } @media (max-width: 1180px) { .object-top-grid { grid-template-columns: 1fr; } .zone-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .object-photo-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); } .grid-three, .system-main-grid, .system-subgrid, .equipment-config-grid, .logic-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .logic-system-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ai-survey-summary-grid, .ai-configurator-influences, .ai-checklist-grid, .ai-system-registry__grid, .ai-photo-prompt-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 1100px) { .system-main-grid-wide { grid-template-columns: 1fr; } .system-control-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .vendor-hint-mid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 760px) { .page-shell { padding: 14px; } .build-badge { position: static; display: inline-flex; margin-bottom: 8px; } .hero-card, .stepper-card, .panel { padding: 10px; border-radius: 12px; } .ai-survey-modal { padding: 12px; } .ai-survey-modal__card { max-height: calc(100vh - 24px); padding: 12px; border-radius: 14px; } .ai-survey-modal__header { flex-direction: column; } .ai-survey-modal__footer { flex-direction: column; align-items: stretch; } .grid-two, .grid-three, .zone-grid, .summary-grid, .ai-survey-summary-grid, .ai-configurator-influences, .object-top-grid, .object-photo-gallery, .system-main-grid, .system-subgrid, .equipment-config-grid, .system-control-grid, .vendor-hint-mid, .manual-item-grid, .ai-checklist-grid, .ai-system-registry__grid, .ai-photo-prompt-grid, .region-select-grid, .logic-grid, .logic-system-metrics, .logic-totals { grid-template-columns: 1fr; } .hero-card { flex-direction: column; } .auth-card { padding: 14px; border-radius: 12px; } .auth-email-row { grid-template-columns: 1fr; } .auth-code-grid { gap: 6px; } .auth-code-cell { height: 44px; font-size: 19px; } .aps-import-actions { flex-direction: column; align-items: stretch; } .object-type-tooltip { width: calc(100vw - 56px); } } @media (prefers-reduced-motion: reduce) { .primary-btn, .ghost-btn, .danger-btn, .step-chip, .lock-btn, .region-option, .file-upload-btn, .object-photo-card { animation: none !important; } }