.error-boundary{position:fixed;top:0;left:0;right:0;bottom:0;background-color:var(--color-surface-gray);display:flex;align-items:center;justify-content:center;z-index:var(--z-max)}.error-boundary-content{background-color:var(--color-surface-white);border:var(--border-width-thick) var(--border-style) var(--color-warm-red);max-width:600px;padding:var(--space-5);text-align:center;box-shadow:var(--shadow-xl)}.error-icon{font-size:var(--text-4xl);margin-bottom:var(--space-3)}.error-title{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--font-weight-medium);color:var(--color-text-primary);margin:0 0 var(--space-3) 0}.error-message{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text-secondary);margin:0 0 var(--space-4) 0;line-height:var(--leading-normal)}.error-details{background-color:var(--color-surface-gray);border:var(--border-width) var(--border-style) var(--color-border-default);margin:var(--space-4) 0;text-align:left}.error-details-summary{padding:var(--space-2) var(--space-3);cursor:pointer;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-text-secondary);-webkit-user-select:none;user-select:none}.error-details-summary:hover{background-color:var(--color-surface-gray)}.error-details-content{padding:var(--space-3);border-top:var(--border-width) var(--border-style) var(--color-border-default)}.error-name{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--font-weight-bold);color:var(--color-warm-red);margin:0 0 var(--space-2) 0}.error-description{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-text-primary);margin:0 0 var(--space-2) 0}.error-stack{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-secondary);background-color:var(--color-surface-white);padding:var(--space-2);margin:0;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.error-actions{display:flex;gap:var(--gap);justify-content:center;margin-top:var(--space-4)}.error-reload,.error-reset{padding:var(--space-2) var(--space-4);font-family:var(--font-display);font-size:var(--text-base);font-weight:var(--font-weight-medium);cursor:pointer;border:none;transition:var(--transition-swift)}.error-reload{background-color:var(--color-energy-yellow);color:var(--color-forest-deep)}.error-reload:hover{opacity:.9}.error-reset{background-color:var(--color-surface-white);color:var(--color-text-primary);border:var(--border-width) var(--border-style) var(--color-cool-neutral)}.error-reset:hover{background-color:var(--color-surface-gray)}.status-message-container{position:fixed;top:calc(var(--header-height) + var(--space-3));right:var(--space-3);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--gap);max-width:400px;pointer-events:none}.status-message{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-3);background-color:var(--color-surface-white);border:var(--border-width-thick) var(--border-style);box-shadow:var(--shadow-lg);cursor:pointer;pointer-events:auto;animation:slideIn var(--duration-smooth) var(--ease-out);transition:var(--transition-swift)}.status-message:hover{transform:translate(-4px)}.status-message-success{border-color:var(--color-sage-green)}.status-message-error{border-color:var(--color-warm-red)}.status-message-warning{border-color:var(--color-warning)}.status-message-info{border-color:var(--color-sky-blue)}.status-message-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:var(--text-base);font-weight:var(--font-weight-bold);flex-shrink:0}.status-message-success .status-message-icon{color:var(--color-sage-green)}.status-message-error .status-message-icon{color:var(--color-warm-red)}.status-message-warning .status-message-icon{color:var(--color-warning)}.status-message-info .status-message-icon{color:var(--color-sky-blue)}.status-message-content{flex:1;min-width:0}.status-message-title{font-family:var(--font-display);font-size:var(--text-base);font-weight:var(--font-weight-medium);color:var(--color-text-primary);line-height:var(--leading-tight);word-break:break-word}.status-message-details{margin:var(--space-1) 0 0 0;padding:0 0 0 var(--space-3);list-style:disc}.status-message-details li{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--leading-normal);margin:var(--space-1) 0}.status-message-close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:none;border:none;color:var(--color-text-secondary);font-size:var(--text-sm);cursor:pointer;transition:var(--transition-swift);flex-shrink:0}.status-message-close:hover{color:var(--color-text-primary);transform:scale(1.1)}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@media (max-width: 640px){.status-message-container{left:var(--space-2);right:var(--space-2);max-width:none}}.header{height:var(--header-height);background-color:var(--color-forest-deep);color:var(--color-text-inverse);display:flex;align-items:center;padding:0 var(--space-4);border-bottom:var(--border-width-thick) solid var(--color-energy-yellow)}.header-logo{flex-shrink:0}.header-logo h1{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--font-weight-medium);margin:0}.header-nav{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-4)}.header-actions{flex-shrink:0;display:flex;align-items:center;gap:var(--space-2)}.sidebar{width:var(--sidebar-width);flex-shrink:0;background-color:var(--color-surface-white);border:var(--border-width) solid var(--color-border-default);display:flex;flex-direction:column;transition:width var(--transition-smooth);position:relative;overflow:hidden}.sidebar--collapsed{width:var(--sidebar-collapsed-width)}.sidebar-toggle{position:absolute;top:var(--space-2);right:var(--space-2);width:28px;height:28px;background-color:var(--color-surface-white);border:var(--border-width) solid var(--color-border-default);color:var(--color-text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:var(--text-sm);z-index:var(--z-above)}.sidebar-toggle:hover{background-color:var(--color-surface-gray)}.sidebar-section{padding:var(--space-3);border-bottom:var(--border-width) solid var(--color-border-default)}.sidebar-section:last-child{border-bottom:none}.sidebar-section-title{font-family:var(--font-display);font-size:var(--text-base);font-weight:var(--font-weight-medium);margin:0 0 var(--space-2) 0;color:var(--color-forest-deep)}.sidebar-section-content{font-family:var(--font-sans);font-size:var(--text-sm)}.sidebar-empty{color:var(--color-text-secondary);font-style:italic;margin:0}.app-shell{width:100vw;height:100vh;display:flex;flex-direction:column;overflow:hidden}.app-shell-body{flex:1;display:flex;overflow:hidden;gap:var(--gap);background-color:var(--color-surface-gray);padding:var(--gap)}.app-shell-main{flex:1;min-width:0;display:flex;flex-direction:column}.main-content{width:100%;height:100%;background-color:var(--color-surface-white);border:var(--border-width) solid var(--color-border-default);overflow:auto}.map-view{width:100%;height:100%;position:relative}.map-container{width:100%;height:100%}.map-placeholder{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:var(--color-surface-gray);color:var(--color-text-secondary)}.map-placeholder p{margin:0;font-family:var(--font-sans)}.map-placeholder p:first-child{font-size:var(--text-lg);color:var(--color-text-primary);margin-bottom:var(--space-2)}.map-placeholder-hint{font-size:var(--text-sm)}.app-shell-main{flex:1;overflow:hidden}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Clarendon,Georgia,serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--color-forest-deep: #052929;--color-forest-mid: #0B3234;--color-forest-light: #124242;--color-energy-yellow: #FFC956;--color-sky-blue: #5FA4C3;--color-sage-green: #5F9C7C;--color-warm-red: #CC3333;--color-warning: #F59E0B;--color-surface-white: #FFFFFF;--color-surface-gray: #F5F5F5;--color-border-default: #E5E5E5;--color-border-focus: var(--color-energy-yellow);--color-text-primary: #1A1A1A;--color-text-secondary: #666666;--color-text-inverse: #FFFFFF;--color-score-1: #5F9C7C;--color-score-2: #FFC956;--color-score-3: #CC3333;--color-cool-neutral: #6B7371;--color-warm-neutral: #736B61;--font-display: "Clarendon", Georgia, serif;--font-sans: "Helvetica Neue", Helvetica, Arial, sans-serif;--font-mono: "Monaco", "Courier New", monospace;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-bold: 700;--text-4xl: 48px;--text-3xl: 36px;--text-2xl: 32px;--text-xl: 24px;--text-lg: 18px;--text-base: 16px;--text-sm: 14px;--text-xs: 12px;--leading-tight: 1.2;--leading-normal: 1.5;--leading-relaxed: 1.75;--gap: 2px;--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 16px;--space-4: 24px;--space-5: 32px;--space-6: 48px;--space-7: 64px;--space-8: 96px;--header-height: 56px;--sidebar-width: 240px;--sidebar-collapsed-width: 48px;--input-height: 38px;--button-height: 38px;--row-height: 38px;--touch-target-min: 44px;--radius-none: 0;--radius-sm: 0;--radius-md: 0;--radius-lg: 0;--border-width: 1px;--border-width-thick: 2px;--border-style: solid;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 2px 4px rgba(0, 0, 0, .1);--shadow-lg: 0 4px 8px rgba(0, 0, 0, .15);--shadow-xl: 0 8px 16px rgba(0, 0, 0, .2);--duration-instant: 0ms;--duration-swift: .2s;--duration-smooth: .3s;--duration-slow: .5s;--ease-out: cubic-bezier(.25, .46, .45, .94);--ease-in-out: cubic-bezier(.42, 0, .58, 1);--transition-swift: var(--duration-swift) var(--ease-out);--transition-smooth: var(--duration-smooth) var(--ease-out);--z-base: 0;--z-above: 10;--z-dropdown: 100;--z-sticky: 200;--z-overlay: 300;--z-modal: 400;--z-popover: 500;--z-tooltip: 600;--z-toast: 700;--z-max: 9999;--breakpoint-sm: 640px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--breakpoint-xl: 1280px;--breakpoint-2xl: 1536px}.font-display{font-family:var(--font-display)}.font-sans{font-family:var(--font-sans)}.font-mono{font-family:var(--font-mono)}.bg-forest-deep{background-color:var(--color-forest-deep)}.bg-forest-mid{background-color:var(--color-forest-mid)}.bg-energy-yellow{background-color:var(--color-energy-yellow)}.bg-white{background-color:var(--color-surface-white)}.bg-gray{background-color:var(--color-surface-gray)}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-inverse{color:var(--color-text-inverse)}.gap-standard{gap:var(--gap)}.p-1{padding:var(--space-1)}.p-2{padding:var(--space-2)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.border{border:var(--border-width) var(--border-style) var(--color-border-default)}.border-focus{border-color:var(--color-border-focus)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.transition-swift{transition:all var(--transition-swift)}.transition-smooth{transition:all var(--transition-smooth)}.btn-primary{background-color:var(--color-energy-yellow);color:var(--color-forest-deep);height:var(--button-height)}.btn-secondary{background-color:var(--color-surface-white);color:var(--color-text-primary);border:var(--border-width) var(--border-style) var(--color-cool-neutral);height:var(--button-height)}.btn-danger{background-color:var(--color-surface-white);color:var(--color-warm-red);border:var(--border-width) var(--border-style) var(--color-warm-red);height:var(--button-height)}.input{height:var(--input-height);background-color:var(--color-surface-white);border:var(--border-width) var(--border-style) var(--color-border-default);padding:0 var(--space-2);font-family:var(--font-sans);font-size:var(--text-base)}.input:focus{outline:none;border-color:var(--color-border-focus)}.header{height:var(--header-height);background-color:var(--color-forest-deep);color:var(--color-text-inverse)}.sidebar{width:var(--sidebar-width);background-color:var(--color-surface-white);border-right:var(--border-width) var(--border-style) var(--color-border-default)}.sidebar.collapsed{width:var(--sidebar-collapsed-width)}
