:root,.theme-forest{--color-bg: #1B1F18;--color-surface: #252e22;--color-surface-hover: #2f3a2b;--color-border: #4C634A;--color-primary: #7C9477;--color-primary-hover: #8ca487;--color-primary-dark: #4C634A;--color-primary-rgb: 124, 148, 119;--color-primary-text: #1B1F18;--color-brand: #7C9477;--color-brand-light: #8ca487;--color-brand-rgb: 124, 148, 119;--color-text: #ece8da;--color-text-muted: #9aa897;--color-success: #7C9477;--color-danger: #c97a6a;--color-danger-hover: #b96a5a;--color-error: #d98a7a}.theme-light{--color-bg: #FBF7EC;--color-surface: #F4ECD8;--color-surface-hover: #ece2c6;--color-border: #d6cdb2;--color-primary: #4C634A;--color-primary-hover: #36482F;--color-primary-dark: #36482F;--color-primary-rgb: 76, 99, 74;--color-primary-text: #FBF7EC;--color-brand: #4C634A;--color-brand-light: #7C9477;--color-brand-rgb: 76, 99, 74;--color-text: #1B1F18;--color-text-muted: #5a6457;--color-success: #4C634A;--color-danger: #B0552B;--color-danger-hover: #984822;--color-error: #B0552B}.theme-nature{--color-bg: #1e1d17;--color-surface: #2a2820;--color-surface-hover: #343128;--color-border: #504a3a;--color-primary: #c4a855;--color-primary-hover: #b49845;--color-primary-dark: #a48835;--color-primary-rgb: 196, 168, 85;--color-primary-text: #000;--color-brand: #8a9858;--color-brand-light: #9aa868;--color-brand-dark: #7a8848;--color-brand-rgb: 138, 152, 88;--color-text: #f0e8d8;--color-text-muted: #a09878;--color-success: #7a9a5a;--color-danger: #b85a4a;--color-danger-hover: #a04a3a;--color-error: #c86a5a}.theme-dark{--color-bg: #1a1d21;--color-surface: #22272e;--color-surface-hover: #2a3038;--color-border: #3a4048;--color-primary: #7aa2c9;--color-primary-hover: #6a92b9;--color-primary-dark: #5a82a9;--color-primary-rgb: 122, 162, 201;--color-primary-text: #000;--color-brand: #7aa2c9;--color-brand-light: #8ab2d9;--color-brand-rgb: 122, 162, 201;--color-text: #e8eaed;--color-text-muted: #8a9098;--color-success: #7ac99a;--color-danger: #c97a7a;--color-danger-hover: #b96a6a;--color-error: #d98a8a}:root{--topbar-height: 56px;--routebar-height: 64px;--sidebar-width: 280px;--sidebar-width-desktop: 320px;--safe-area-top: env(safe-area-inset-top, 0px);--safe-area-bottom: env(safe-area-inset-bottom, 0px);--bottom-bar-h: 56px}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;overflow:hidden}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--color-bg);color:var(--color-text);touch-action:manipulation}.app{height:100%;display:flex;flex-direction:column}.main{flex:1;position:relative;overflow:hidden}.main>.map-container{position:absolute;inset:0}html:has(.design-catalog),html:has(.design-catalog) body,#root:has(.design-catalog){overflow:visible;height:auto}.map-loading-overlay{position:absolute;inset:0;background:var(--color-bg, #1a1a2e);display:flex;align-items:center;justify-content:center;z-index:1000;pointer-events:none}.map-loading-spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,.1);border-top-color:var(--color-primary, #4a9eff);border-radius:50%;animation:map-spin .8s linear infinite}@keyframes map-spin{to{transform:rotate(360deg)}}.long-press-indicator{position:absolute;width:32px;height:32px;margin-left:-16px;margin-top:-16px;border-radius:50%;border:3px solid var(--color-primary);background:rgba(var(--color-primary-rgb),.25);pointer-events:none;z-index:200;animation:long-press-pulse .5s ease-out forwards}@keyframes long-press-pulse{0%{transform:scale(.5);opacity:.3}to{transform:scale(1);opacity:1}}.move-waypoint-indicator{position:fixed;top:70px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:20px;box-shadow:0 4px 12px #0000004d;z-index:200;animation:slideDown .2s ease-out}.move-waypoint-indicator span{font-size:14px;color:var(--color-text)}.move-waypoint-indicator button{padding:4px 12px;border-radius:12px;font-size:13px;cursor:pointer;transition:background .15s,color .15s}.move-waypoint-cancel{background:transparent;border:1px solid var(--color-border);color:var(--color-text-muted)}.move-waypoint-cancel:hover{background:var(--color-surface-hover);color:var(--color-text)}.move-waypoint-done{background:var(--color-primary);border:none;color:var(--color-primary-text);font-weight:500}.move-waypoint-done:hover{background:var(--color-primary-dark)}.insert-waypoint-popup{position:absolute;transform:translate(-50%,-100%);margin-top:-16px;display:flex;flex-direction:column;gap:6px;padding:8px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 12px #0006;z-index:250;animation:popup-appear .15s ease-out}@keyframes popup-appear{0%{opacity:0;transform:translate(-50%,-100%) scale(.9)}to{opacity:1;transform:translate(-50%,-100%) scale(1)}}.insert-waypoint-btn{padding:10px 16px;background:var(--color-primary);color:var(--color-bg);border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap}.insert-waypoint-btn:active{background:var(--color-primary-hover)}.insert-waypoint-cancel{padding:8px 16px;background:transparent;color:var(--color-text-muted);border:none;border-radius:6px;font-size:13px;cursor:pointer}.insert-waypoint-cancel:active{background:var(--color-surface-hover)}.layout-slot-top{position:absolute;top:calc(var(--topbar-height) + var(--safe-area-top));left:0;right:0;z-index:99;animation:slideDown .15s ease-out}:root{--modal-top-offset: 75px}.modal-backdrop{position:fixed;inset:0;background:#0009;display:flex;align-items:flex-start;justify-content:center;z-index:300;padding:var(--modal-top-offset) 20px 20px}.modal{background:var(--color-surface);border-radius:16px;max-width:400px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px #0000004d}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--color-border)}.modal-header h3{font-size:1.1rem;font-weight:600;color:var(--color-text)}.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:8px;color:var(--color-text-muted);font-size:1.3rem;cursor:pointer;transition:background .15s}.modal-close:hover{background:var(--color-surface-hover)}.modal-body{padding:20px}.modal-error{background:#f871711a;border:1px solid var(--color-error);color:var(--color-error);padding:10px 12px;border-radius:8px;margin-bottom:16px;font-size:.9rem}.modal-footer{display:flex;gap:12px;justify-content:flex-end;padding:16px 20px;border-top:1px solid var(--color-border)}.form-group{margin-bottom:16px}.form-group:last-child{margin-bottom:0}.form-group label{display:block;font-size:.85rem;font-weight:500;color:var(--color-text-muted);margin-bottom:6px}.form-group input,.form-group textarea,.form-group select{width:100%;background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;padding:10px 12px;color:var(--color-text);font-size:.95rem;font-family:inherit}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:var(--color-primary)}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--color-text-muted);opacity:.6}.form-group input:disabled,.form-group textarea:disabled,.form-group select:disabled{opacity:.5;cursor:not-allowed}.form-hint{font-size:.85rem;color:var(--color-text-muted)}.tab{flex:1;padding:8px 12px;background:transparent;border:none;border-radius:6px;color:var(--color-text-muted);font-size:.9rem;cursor:pointer;transition:background .15s,color .15s}.tab:hover{color:var(--color-text)}.tab.active{background:var(--color-surface);color:var(--color-primary)}.tab:disabled{opacity:.5;cursor:not-allowed}.btn-primary{padding:10px 20px;background:var(--color-primary);color:var(--color-primary-text);border:none;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{padding:10px 20px;background:transparent;border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-muted);font-size:.9rem;cursor:pointer;transition:background .15s}.btn-secondary:hover:not(:disabled){background:var(--color-surface-hover)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-small{padding:6px 12px;font-size:.85rem}.btn-save{padding:8px 16px;background:var(--color-primary);border:none;border-radius:8px;color:var(--color-primary-text);font-size:.85rem;font-weight:600;cursor:pointer;transition:background .15s}.btn-save:hover{background:var(--color-primary-dark)}.map-style-option.active{color:var(--color-primary);font-weight:500}.spinning{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;border:1px solid var(--color-border);background:var(--color-surface-hover);color:var(--color-text-muted);cursor:pointer;flex-shrink:0;transition:opacity .15s,background .15s}.btn-icon:hover{opacity:.85}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.btn-icon-danger{border-color:var(--color-error, #c0544e);color:var(--color-error, #c0544e);background:color-mix(in srgb,var(--color-error, #c0544e) 8%,transparent)}.btn-icon-danger:hover{background:color-mix(in srgb,var(--color-error, #c0544e) 14%,transparent)}.panel-form-group{display:flex;flex-direction:column;gap:4px}.panel-form-group label{font-size:.8rem;color:var(--color-text-muted);font-weight:500}.panel-form-group input,.panel-form-group textarea{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;padding:8px 12px;font-size:.85rem;color:var(--color-text);outline:none;resize:vertical;font-family:inherit}.panel-form-group input:focus,.panel-form-group textarea:focus{border-color:var(--color-primary)}.panel-form-group input::placeholder,.panel-form-group textarea::placeholder{color:var(--color-text-muted);opacity:.6}.panel-form-error{background:#ff32321a;color:#ff6b6b;padding:8px 12px;border-radius:8px;font-size:.8rem}.panel-form-section{display:flex;flex-direction:column;gap:8px}.panel-actions{display:flex;gap:8px;padding:16px 0 0}.panel-action-btn{padding:10px 16px;border-radius:8px;font-size:.85rem;font-weight:500;cursor:pointer}.panel-action-btn.primary{background:var(--color-primary);color:var(--color-primary-text);border:none;flex:1}.panel-action-btn.primary:hover:not(:disabled){filter:brightness(1.1)}.panel-action-btn.primary:disabled{opacity:.5;cursor:not-allowed}.panel-action-btn.danger{background:none;border:1px solid rgba(255,80,80,.3);color:#ff6b6b}.panel-action-btn.danger:hover:not(:disabled){background:#ff50501a}.panel-action-btn.secondary{background:none;border:1px solid var(--color-border);color:var(--color-text-muted)}.panel-action-btn.secondary:hover:not(:disabled){background:var(--color-surface-hover);color:var(--color-text)}@media(min-width:1024px){:root{--sidebar-width-desktop: 360px}.app{display:grid;grid-template-columns:var(--sidebar-width-desktop) 1fr;grid-template-rows:1fr}.topbar,.bottom-bar{display:none}.main{grid-column:2;grid-row:1}.layout-slot-top{top:0;left:0}:root{--modal-top-offset: 20px}.toolbar-modal-backdrop,.modal-backdrop,.routes-modal-backdrop{left:var(--sidebar-width-desktop)}.toolbar-modal{left:calc(var(--sidebar-width-desktop) + 16px)}.toolbar-modal.search-modal,.profile-modal{top:var(--modal-top-offset);bottom:auto;left:calc(var(--sidebar-width-desktop) + 16px);right:16px;max-width:480px;margin:0 auto;border-radius:16px;animation:slideUp .2s ease-out}.toolbar-modal-backdrop:has(.search-modal),.toolbar-modal-backdrop:has(.profile-modal){left:var(--sidebar-width-desktop)}.toolbar-modal.search-modal:before,.profile-modal:before{display:none}}.icon-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:8px;color:var(--color-text);cursor:pointer;transition:all .15s}.icon-btn svg{stroke:currentColor}.icon-btn:hover{background:var(--color-surface-hover)}.icon-btn:disabled{opacity:.3;cursor:not-allowed}.icon-btn:disabled:hover{background:transparent}.icon-btn.active{background-color:var(--color-primary);color:var(--color-bg)}.icon-btn.active:hover{background-color:var(--color-primary-hover)}.icon-btn.offline-active{background-color:var(--color-danger);color:var(--color-bg)}.icon-btn.offline-active:hover{background-color:var(--color-danger-hover)}.debug-bar{height:28px;background:#000000bf;display:flex;align-items:center;justify-content:center;gap:8px;padding:0 12px;font-family:SF Mono,Menlo,Monaco,monospace;font-size:.75rem;color:#aaa}.debug-bar .debug-sep{color:#555}.debug-bar .debug-offline{color:#f59e0b}.debug-bar .debug-online{color:#4ade80}.debug-bar .debug-activity{color:var(--color-primary);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
