.login-page{--login-accent: #ffa500;--login-text: #4a4f57;--login-field-bg: #eceef1;min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:max(24px,env(safe-area-inset-top)) 20px max(24px,env(safe-area-inset-bottom));background-color:#262626;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='56' viewBox='0 0 56 56'%3E%3Cg fill='none' stroke='%23343434' stroke-width='1'%3E%3Cpath d='M0 14h56M0 42h56M14 0v56M42 0v56'/%3E%3Cpath d='M14 14h28v28H14z'/%3E%3C/g%3E%3C/svg%3E");overflow:auto}[data-theme=light] .login-page{background-color:#dce1e8;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='56' viewBox='0 0 56 56'%3E%3Cg fill='none' stroke='%23b8c0ca' stroke-width='1'%3E%3Cpath d='M0 14h56M0 42h56M14 0v56M42 0v56'/%3E%3Cpath d='M14 14h28v28H14z'/%3E%3C/g%3E%3C/svg%3E")}.login-card{width:100%;max-width:420px;background:#fff;border-radius:18px;box-shadow:0 12px 40px #00000059;overflow:hidden}.login-card__head{padding:28px 24px 22px;text-align:center;border-bottom:1px solid #e2e5ea}.login-card__title{margin:0;font-size:1.05rem;font-weight:700;letter-spacing:.04em;color:var(--login-text)}.login-card__body{padding:28px 28px 24px;display:flex;flex-direction:column;gap:14px}.login-field{display:flex;align-items:center;gap:10px;padding:0 14px 0 12px;min-height:46px;border-radius:999px;background:var(--login-field-bg)}.login-field__icon{flex-shrink:0;width:20px;height:20px;color:#9aa3ad}.login-field__icon--accent{color:var(--login-accent)}.login-field__icon--muted{color:#b0b8c0}.login-field__input{flex:1;min-width:0;border:none;background:transparent;padding:12px 0;font:inherit;font-size:.95rem;color:var(--login-text);outline:none}.login-field__input::placeholder{color:#a8b0b8}.login-field__hint{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;background:transparent;cursor:pointer}.login-card__error{margin:0;font-size:.85rem;color:var(--danger);text-align:center}.login-card__foot{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:8px}.login-remember{display:flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.login-remember__input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.login-remember__box{flex-shrink:0;width:18px;height:18px;border-radius:50%;border:2px solid #c5cad1;background:#fff;transition:background .15s,border-color .15s}.login-remember__input:checked+.login-remember__box{border-color:var(--login-accent);background:var(--login-accent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='%23fff' d='M4.5 9 1.5 6l1-1 2 2 4.5-4.5 1 1z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center;background-size:12px 12px}.login-remember__label{font-size:.9rem;color:var(--login-text)}.login-submit{flex-shrink:0;min-width:108px;min-height:40px;padding:10px 28px;border:none;border-radius:999px;background:var(--login-accent);color:#fff;font:inherit;font-size:.9rem;font-weight:600;letter-spacing:.06em;cursor:pointer}.login-submit:disabled{opacity:.65;cursor:wait}.login-submit:not(:disabled):hover{filter:brightness(1.05)}html.pwa-mode,html.pwa-mode body,html.pwa-mode #root{height:100%;min-height:100dvh;min-height:-webkit-fill-available;margin:0;overflow:hidden}.pwa-root{--pwa-nav-h: 56px;--pwa-safe-t: env(safe-area-inset-top, 0px);--pwa-safe-b: env(safe-area-inset-bottom, 0px);height:100%;height:100dvh;max-height:100dvh;overflow:hidden;background:var(--bg);color:var(--text);font-family:IBM Plex Sans,Segoe UI,system-ui,sans-serif;padding-top:var(--pwa-safe-t)}.pwa-shell{display:flex;flex-direction:column;height:100%;min-height:0}.pwa-main{position:relative;flex:1;min-height:0;overflow:hidden;padding-bottom:calc(var(--pwa-nav-h) + var(--pwa-safe-b))}.pwa-bottom-nav{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;height:calc(var(--pwa-nav-h) + var(--pwa-safe-b));padding-bottom:var(--pwa-safe-b);background:var(--line);border-top:1px solid var(--line);z-index:40}.pwa-bottom-nav a{display:flex;align-items:center;justify-content:center;min-height:var(--touch-min, 44px);color:var(--muted);text-decoration:none;font-size:.78rem;font-weight:500;letter-spacing:.02em;background:var(--panel)}.pwa-bottom-nav a.active{color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 -3px 0 var(--accent)}.pwa-offline-banner{position:fixed;top:var(--pwa-safe-t);left:0;right:0;z-index:100;padding:8px 12px;text-align:center;font-size:.85rem;background:var(--danger);color:#fff}.pwa-map{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;min-height:0;z-index:0}.pwa-map-canvas{position:relative;flex:1 1 0;min-height:0;width:100%;background:var(--map-canvas-bg)}.pwa-map-canvas .maplibregl-map{background:var(--map-canvas-bg);font-family:inherit}.pwa-map-canvas .map-legend{top:8px;left:8px;right:8px;transform:none;max-width:none;z-index:10}.pwa-map-marker{width:14px;height:14px;border-radius:50%;border:2px solid var(--marker-ring);box-shadow:0 0 0 1px var(--marker-ring-shadow);padding:0;cursor:pointer}.pwa-map-error{position:absolute;top:8px;left:8px;right:8px;z-index:11;padding:8px 12px;border-radius:8px;background:#b42828eb;color:#fff;font-size:.85rem;text-align:center}.pwa-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay-scrim);z-index:30}.pwa-sheet{position:fixed;left:0;right:0;bottom:calc(var(--pwa-nav-h) + var(--pwa-safe-b));max-height:55vh;z-index:35;display:flex;flex-direction:column;background:var(--panel);border-top-left-radius:16px;border-top-right-radius:16px;border:1px solid var(--accent-border);border-bottom:none;overflow:hidden;box-shadow:0 -4px 24px var(--shadow-soft)}.pwa-sheet__head{padding:12px 14px;border-bottom:1px solid var(--line)}.pwa-sheet__head h2{margin:0 0 10px;font-size:1rem;color:var(--accent)}.pwa-equipment-list{list-style:none;margin:0;padding:0;overflow:auto}.pwa-equipment-row{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;border:none;border-bottom:1px solid var(--line);background:transparent;color:inherit;text-align:left;cursor:pointer}.pwa-equipment-row:active,.pwa-equipment-row:focus-visible{background:var(--accent-soft);outline:none}.pwa-equipment-row__dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.pwa-equipment-row__body{display:flex;flex-direction:column;gap:2px;min-width:0}.pwa-detail-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:flex-end}.pwa-detail-overlay__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;border:none;background:var(--overlay-scrim);cursor:pointer}.pwa-detail-sheet{position:relative;width:100%;max-height:70vh;background:var(--panel);border-top-left-radius:16px;border-top-right-radius:16px;border-top:2px solid var(--accent);overflow:auto;margin-bottom:calc(var(--pwa-nav-h) + var(--pwa-safe-b))}.pwa-detail-sheet__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px;border-bottom:1px solid var(--line)}.pwa-detail-sheet__head h3{margin:0 0 6px;font-size:1rem}.pwa-detail-sheet__badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.75rem;background:var(--accent);color:#1a1f26}.pwa-detail-sheet__body{padding:14px;font-size:.9rem;overflow:auto;max-height:calc(70vh - 60px)}.pwa-linked-equipment{margin-top:12px}.pwa-linked-equipment__title{margin:0 0 8px;font-size:.9rem;color:var(--accent)}.pwa-status-block{margin:14px 0}.pwa-status-buttons{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.pwa-status-btn{padding:8px 12px;border-radius:8px;border:2px solid;color:var(--text);background:var(--bg);font:inherit;font-size:.85rem;cursor:pointer}.pwa-status-btn:disabled{opacity:.55;cursor:default}.pwa-photo-upload{position:relative;margin:14px 0}.pwa-photo-upload__input{position:absolute;width:44px;height:44px;opacity:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;pointer-events:none}.pwa-photo-upload__hint{margin-top:4px;font-size:.8rem}.pwa-photo-upload__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.pwa-profile{position:relative;z-index:1;padding:16px 14px;overflow:auto;height:100%}.pwa-profile__title{margin:0 0 14px;font-size:1.2rem;color:var(--accent)}.pwa-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px}.pwa-card h2{margin:0 0 10px;font-size:1rem;color:var(--accent)}.pwa-form{display:flex;flex-direction:column;gap:10px}.pwa-label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--muted)}.pwa-input{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--text);font:inherit}.pwa-input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent-border)}.pwa-btn{border:none;border-radius:8px;padding:10px 14px;font:inherit;font-weight:600;cursor:pointer}.pwa-btn--primary{background:var(--accent);color:#1a1f26}.pwa-btn--primary:hover{filter:brightness(1.05)}.pwa-btn--ghost{background:transparent;color:var(--text);border:1px solid var(--line)}.pwa-btn--ghost:hover{border-color:var(--accent-border);color:var(--accent)}.pwa-btn--danger{background:transparent;color:var(--danger);border:1px solid var(--danger)}.pwa-btn--block{width:100%;margin-top:10px}.pwa-btn--sm{padding:6px 10px;font-size:.85rem;border:1px solid var(--accent-border);color:var(--accent);background:var(--accent-soft)}.pwa-meta{color:var(--muted);font-size:.85rem}.pwa-error{color:var(--danger);font-size:.85rem;margin:8px 14px}.pwa-ok{color:var(--ok);font-size:.85rem}.pwa-empty{padding:16px 14px;color:var(--muted)}.pwa-install-prompt{margin-bottom:12px;padding:12px;border-radius:12px;background:var(--accent-soft);border:1px solid var(--accent-border)}.pwa-install-prompt p{margin:0 0 10px;font-size:.9rem}.pwa-install-prompt__hint{margin:0 0 10px;font-size:.85rem;color:var(--muted)}.pwa-install-prompt__actions{display:flex;gap:8px;justify-content:flex-end}:root{--bg: #0f1114;--panel: #171a1f;--line: #2a3038;--text: #e6e9ef;--muted: #8b939e;--accent: #ffa500;--warn: #e8a23c;--danger: #e05858;--ok: #4cbf7a;--map-canvas-bg: #141820;--overlay-floating: rgba(15, 17, 20, .92);--overlay-scrim: rgba(15, 17, 20, .72);--nav-active-bg: #1e2229;--accent-soft: rgba(255, 165, 0, .15);--accent-border: rgba(255, 165, 0, .45);--marker-ring: #0f1114;--marker-ring-shadow: rgba(255, 255, 255, .15);--badge-bg: rgba(15, 17, 20, .82);--shadow-soft: rgba(0, 0, 0, .35);--scrollbar-track: #12151a;--scrollbar-thumb: #3d4654;--scrollbar-thumb-hover: #4f5a6b;--touch-min: 44px;--rail-width: 56px;--sheet-primary-width: 340px;--sheet-secondary-width: 380px;--sheet-mobile-max-height: min(92vh, 640px);font-family:IBM Plex Sans,Segoe UI,system-ui,sans-serif;color:var(--text);background:var(--bg)}[data-theme=light]{--bg: #f0f2f5;--panel: #ffffff;--line: #d4dae2;--text: #1a1f26;--muted: #5f6873;--accent: #ffa500;--warn: #c47d12;--danger: #c93c3c;--ok: #2d9a5c;--map-canvas-bg: #e2e7ee;--overlay-floating: rgba(255, 255, 255, .94);--overlay-scrim: rgba(240, 242, 245, .85);--nav-active-bg: #e4e9ef;--accent-soft: rgba(255, 165, 0, .12);--accent-border: rgba(255, 165, 0, .4);--marker-ring: #1a1f26;--marker-ring-shadow: rgba(0, 0, 0, .15);--badge-bg: rgba(26, 31, 38, .78);--shadow-soft: rgba(0, 0, 0, .12);--scrollbar-track: #e2e7ee;--scrollbar-thumb: #aab4c0;--scrollbar-thumb-hover: #8f9aab}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:var(--scrollbar-track)}*::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:5px;border:2px solid var(--scrollbar-track)}*::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}*::-webkit-scrollbar-button,*::-webkit-scrollbar-button:single-button,*::-webkit-scrollbar-button:vertical:start:decrement,*::-webkit-scrollbar-button:vertical:end:increment,*::-webkit-scrollbar-button:horizontal:start:decrement,*::-webkit-scrollbar-button:horizontal:end:increment{display:none;width:0;height:0}*::-webkit-scrollbar-corner{background:var(--scrollbar-track)}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}
