:root{font-family:Poppins,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;--meraki-primary: #033F63;--meraki-primary-dark: #022a45;--meraki-primary-light: #0a5a8a;--meraki-bg: #ffffff;--meraki-bg-secondary: #f5f7f6;--meraki-bg-tertiary: #e8edeb;--meraki-border: #d1d9d6;--meraki-text: #1a1a1a;--meraki-text-secondary: #666666;color-scheme:light;color:var(--meraki-text);background-color:var(--meraki-bg-secondary);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}.landing{min-height:100vh;display:flex;flex-direction:column}.landing-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;border-bottom:1px solid var(--meraki-border);background:var(--meraki-bg)}.landing-branding{display:flex;align-items:center;gap:.75rem}.landing-logo{height:40px;width:auto}.landing-name{font-size:1.5rem;font-weight:600;color:var(--meraki-primary)}.landing-login-btn{padding:.5rem 1.25rem;background:transparent;border:1px solid var(--meraki-primary);border-radius:10px;color:var(--meraki-primary);font-weight:500;text-decoration:none;transition:background .2s,color .2s}.landing-login-btn:hover{background:var(--meraki-primary);color:#fff}.landing-hero{text-align:center;padding:4rem 2rem;background:linear-gradient(180deg,var(--meraki-bg) 0%,var(--meraki-bg-secondary) 100%)}.landing-hero h1{font-size:2.75rem;line-height:1.2;margin-bottom:1.5rem;color:var(--meraki-text)}.hero-subtitle{font-size:1.25rem;color:var(--meraki-text-secondary);max-width:600px;margin:0 auto 2rem;line-height:1.6}.hero-cta{display:flex;justify-content:center;gap:1rem}.cta-primary{display:inline-block;padding:.875rem 2rem;background:var(--meraki-primary);color:#fff;border-radius:10px;font-weight:600;font-size:1.1rem;text-decoration:none;transition:background .2s,transform .2s}.cta-primary:hover{background:var(--meraki-primary-dark);transform:translateY(-2px)}.landing-features{padding:4rem 2rem;background:var(--meraki-bg)}.landing-features h2{text-align:center;font-size:2rem;color:var(--meraki-primary);margin-bottom:3rem}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem;max-width:1200px;margin:0 auto}.feature-card{background:var(--meraki-bg-secondary);border:1px solid var(--meraki-border);border-radius:16px;padding:2rem;text-align:center;transition:transform .2s,box-shadow .2s}.feature-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px #0000001a}.feature-icon{margin-bottom:1rem;color:var(--meraki-primary)}.feature-icon svg{display:block;margin:0 auto}.feature-card h3{font-size:1.25rem;color:var(--meraki-text);margin-bottom:.75rem}.feature-card p{color:var(--meraki-text-secondary);line-height:1.6;font-size:.95rem}.landing-pricing{padding:4rem 2rem;background:var(--meraki-bg-secondary);display:flex;justify-content:center}.pricing-card{background:var(--meraki-bg);border:2px solid var(--meraki-primary);border-radius:20px;padding:2.5rem;text-align:center;max-width:400px;width:100%;position:relative}.pricing-badge{position:absolute;top:-14px;left:50%;transform:translate(-50%);background:var(--meraki-primary);color:#fff;padding:.5rem 1.5rem;border-radius:20px;font-weight:600;font-size:.9rem}.pricing-card h2{font-size:4rem;color:var(--meraki-primary);margin:1rem 0 .5rem}.pricing-subtitle{color:var(--meraki-text-secondary);margin-bottom:1.5rem}.pricing-features{list-style:none;padding:0;margin:0 0 2rem;text-align:left}.pricing-features li{padding:.75rem 0;border-bottom:1px solid var(--meraki-border);color:var(--meraki-text);display:flex;align-items:center;gap:.75rem}.pricing-features li:before{content:"✓";color:var(--meraki-primary);font-weight:700}.pricing-features li:last-child{border-bottom:none}.landing-footer{padding:2rem;text-align:center;background:var(--meraki-bg);border-top:1px solid var(--meraki-border);margin-top:auto}.landing-footer p{margin:.5rem 0;color:var(--meraki-text-secondary)}.footer-note{font-size:.85rem;opacity:.7}@media (max-width: 768px){.landing-header{padding:1rem}.landing-name{font-size:1.25rem}.landing-hero{padding:3rem 1.5rem}.landing-hero h1{font-size:2rem}.hero-subtitle{font-size:1rem}.landing-features{padding:3rem 1.5rem}.landing-features h2{font-size:1.5rem}.features-grid{gap:1.5rem}.feature-card{padding:1.5rem}.landing-pricing{padding:3rem 1.5rem}.pricing-card{padding:2rem 1.5rem}.pricing-card h2{font-size:3rem}}.app{max-width:500px;margin:0 auto;padding:2rem;text-align:center}.app.loading{display:flex;justify-content:center;align-items:center;min-height:100vh;color:var(--meraki-primary)}h1{font-size:2.5em;line-height:1.1;margin-bottom:.5rem;color:var(--meraki-primary)}.subtitle{color:var(--meraki-text-secondary);margin-bottom:2rem}.app-branding{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-bottom:1rem}.app-logo{max-width:120px;height:auto}.app-name{font-size:2rem;font-weight:600;color:var(--meraki-primary)}.header-branding{display:flex;align-items:center;gap:.75rem}.header-logo{height:36px;width:auto}.header-name{font-size:1.25rem;font-weight:600;color:var(--meraki-primary)}.auth-container{background:var(--meraki-bg);padding:2rem;border-radius:16px;text-align:left;border:1px solid var(--meraki-border);box-shadow:0 2px 8px #00000014}.auth-container h2{margin-top:0;text-align:center;color:var(--meraki-primary)}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--meraki-text)}.form-group input,.form-group textarea{width:100%;padding:.75rem;border:1px solid var(--meraki-border);border-radius:10px;background:var(--meraki-bg);color:var(--meraki-text);font-size:1rem;box-sizing:border-box}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--meraki-primary);box-shadow:0 0 0 3px #033f631a}.radio-group{display:flex;gap:1.5rem}.radio-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:400}.radio-label input[type=radio]{width:auto;margin:0;cursor:pointer}.storage-toggle{display:flex;align-items:center;gap:.75rem}.storage-option{font-size:.9rem;color:var(--meraki-text-muted);transition:color .2s,font-weight .2s}.storage-option.active{color:var(--meraki-primary);font-weight:600}.toggle-switch{position:relative;width:50px;height:26px;background:var(--meraki-border);border:none;border-radius:13px;cursor:pointer;padding:0;transition:background .3s}.toggle-switch.on{background:var(--meraki-primary)}.toggle-slider{position:absolute;top:3px;left:3px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s;box-shadow:0 1px 3px #0003}.toggle-switch.on .toggle-slider{transform:translate(24px)}button{padding:.75rem 1.5rem;border:none;border-radius:10px;background:var(--meraki-primary);color:#fff;font-size:1rem;font-weight:500;cursor:pointer;transition:background .2s}button:hover:not(:disabled){background:var(--meraki-primary-dark)}button:disabled{opacity:.6;cursor:not-allowed}button.danger{background:#dc3545;color:#fff}button.danger:hover:not(:disabled){background:#c82333}.toggle-auth{text-align:center;margin-top:1rem}.toggle-auth button{background:none;color:var(--meraki-primary);padding:0;text-decoration:none}.toggle-auth button:hover{color:var(--meraki-primary-light)}.error{color:#dc3545;margin:.5rem 0}.success{color:var(--meraki-primary);margin:.5rem 0}.dashboard{min-height:100vh;display:flex;flex-direction:column}.dashboard-body{display:flex;flex:1}.sidebar{width:220px;background:var(--meraki-bg);border-right:1px solid var(--meraki-border);padding:1rem 0;flex-shrink:0}.sidebar-header{display:none}.sidebar-nav{display:flex;flex-direction:column;gap:.25rem}.sidebar-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.5rem;background:none;border:none;border-radius:0;color:var(--meraki-text-secondary);font-size:.95rem;font-weight:500;text-align:left;cursor:pointer;transition:background .15s,color .15s}.sidebar-item:hover{background:var(--meraki-primary);color:#fff}.sidebar-item.active{background:#033f631a;color:var(--meraki-primary);border-right:3px solid var(--meraki-primary)}.sidebar-icon{display:flex;align-items:center;justify-content:center;width:1.5rem}.sidebar-icon svg{display:block}.sidebar-label{flex:1}.header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;border-bottom:1px solid var(--meraki-border);background:var(--meraki-bg)}.header h1{font-size:1.5rem;margin:0}.user-info{display:flex;align-items:center;gap:1rem}.user-info span{color:var(--meraki-text-secondary)}.logout-btn{padding:.5rem 1rem;font-size:.875rem;background:transparent;border:1px solid var(--meraki-border);color:var(--meraki-text)}.logout-btn:hover{background:var(--meraki-bg-tertiary);border-color:var(--meraki-primary)}.main-content{flex:1;padding:2rem;overflow-y:auto;max-width:1200px}.overview{background:var(--meraki-bg);border-radius:16px;border:1px solid var(--meraki-border);box-shadow:0 2px 8px #00000014;padding:1.5rem}.overview h2{margin:0;color:var(--meraki-primary);font-size:1.5rem}.overview-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.refresh-btn{padding:.5rem 1rem;font-size:.875rem;background:transparent;border:1px solid var(--meraki-border);color:var(--meraki-text)}.refresh-btn:hover{background:var(--meraki-bg-tertiary);border-color:var(--meraki-primary)}.loading-state,.empty-state{text-align:center;padding:3rem;color:var(--meraki-text-secondary)}.error-state{text-align:center;padding:2rem}.error-state button{margin-top:1rem}.error-details{text-align:left;background:var(--meraki-bg-tertiary);border:1px solid var(--meraki-border);border-radius:8px;padding:1rem;margin:1rem 0;font-size:.85rem;overflow-x:auto;white-space:pre-wrap;word-break:break-word;max-width:600px;margin-left:auto;margin-right:auto}.api-key-prompt{text-align:center;padding:3rem 2rem;background:var(--meraki-bg-secondary);border-radius:12px;border:1px dashed var(--meraki-border)}.api-key-prompt-icon{color:var(--meraki-primary);margin-bottom:1rem}.api-key-prompt h3{margin:0 0 .5rem;color:var(--meraki-text);font-size:1.25rem}.api-key-prompt p{margin:0 0 1.5rem;color:var(--meraki-text-secondary)}.api-key-prompt-btn{display:inline-block;padding:.75rem 1.5rem;background:var(--meraki-primary);color:#fff;text-decoration:none;border-radius:8px;font-weight:500;transition:background .2s}.api-key-prompt-btn:hover{background:var(--meraki-primary-hover)}.table-container{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:.9rem}.data-table th,.data-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--meraki-border)}.data-table th{background:var(--meraki-bg-tertiary);font-weight:600;color:var(--meraki-text);white-space:nowrap}.data-table tbody tr:hover{background:var(--meraki-bg-secondary)}.data-table td a{color:var(--meraki-primary);font-weight:500}.data-table td a:hover{color:var(--meraki-primary-light)}.data-table .mono{font-family:monospace;font-size:.85rem;color:var(--meraki-text-secondary)}.badge{display:inline-block;padding:.25rem .5rem;border-radius:6px;font-size:.75rem;font-weight:500}.badge-success{background:#033f631a;color:var(--meraki-primary)}.badge-error{background:#dc35451a;color:#dc3545}.table-footer{margin-top:1rem;margin-bottom:0;font-size:.875rem;color:var(--meraki-text-secondary)}.api-key-form{background:var(--meraki-bg);padding:1.5rem;border-radius:16px;margin-bottom:2rem;border:1px solid var(--meraki-border);box-shadow:0 2px 8px #00000014}.api-key-form h3{margin-top:0;color:var(--meraki-primary)}.button-group{display:flex;gap:.5rem}.help-text{font-size:.875rem;color:var(--meraki-text-secondary);margin-top:1rem;margin-bottom:0}.api-explorer{background:var(--meraki-bg);padding:1.5rem;border-radius:16px;border:1px solid var(--meraki-border);box-shadow:0 2px 8px #00000014}.api-explorer h3{margin-top:0;color:var(--meraki-primary)}.request-line{display:flex;gap:.5rem;margin-bottom:1rem}.request-line select{padding:.75rem;border:1px solid var(--meraki-border);border-radius:10px;background:var(--meraki-bg);color:var(--meraki-text);font-size:1rem}.request-line select:focus{outline:none;border-color:var(--meraki-primary);box-shadow:0 0 0 3px #033f631a}.endpoint-input{flex:1}.response-section{margin-top:1.5rem;border:1px solid var(--meraki-border);border-radius:12px;overflow:hidden}.response-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--meraki-bg-tertiary);border-bottom:1px solid var(--meraki-border);font-weight:500}.status-code{padding:.25rem .5rem;border-radius:6px;font-size:.875rem}.status-code.success{background:#033f631a;color:var(--meraki-primary)}.status-code.error{background:#dc35451a;color:#dc3545}.response-body{margin:0;padding:1rem;overflow-x:auto;font-size:.875rem;background:var(--meraki-bg-secondary);max-height:400px;overflow-y:auto;color:var(--meraki-text)}.endpoint-hints{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--meraki-border);font-size:.875rem;color:var(--meraki-text-secondary);text-align:left}.endpoint-hints p{margin-bottom:.5rem}.endpoint-hints ul{margin:0;padding-left:1.5rem}.endpoint-hints li{margin-bottom:.25rem}.endpoint-hints code{background:var(--meraki-bg-tertiary);padding:.125rem .375rem;border-radius:6px;color:var(--meraki-primary)}.endpoint-hints .docs-link{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--meraki-border)}.endpoint-hints .docs-link a{color:var(--meraki-primary);font-weight:500}.endpoint-hints .docs-link a:hover{color:var(--meraki-primary-light)}.params-section{margin-bottom:1rem}.params-header{margin-bottom:.75rem}.params-header{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.params-header label{font-weight:500;color:var(--meraki-text)}.params-hint{font-size:.8rem;color:var(--meraki-text-secondary);font-weight:400}.body-section{margin-bottom:1rem}.body-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.body-header label{font-weight:500;color:var(--meraki-text)}.body-mode-toggle{display:flex;gap:0;border:1px solid var(--meraki-border);border-radius:8px;overflow:hidden}.body-mode-toggle button{padding:.375rem .75rem;font-size:.875rem;background:var(--meraki-bg);color:var(--meraki-text-secondary);border:none;border-radius:0}.body-mode-toggle button:hover{background:var(--meraki-bg-tertiary)}.body-mode-toggle button.active{background:var(--meraki-primary);color:#fff}.body-params{display:flex;flex-direction:column;gap:.5rem}.param-row{display:flex;gap:.5rem}.param-key{flex:1;padding:.75rem;border:1px solid var(--meraki-border);border-radius:10px;background:var(--meraki-bg);color:var(--meraki-text);font-size:1rem}.param-value{flex:2;padding:.75rem;border:1px solid var(--meraki-border);border-radius:10px;background:var(--meraki-bg);color:var(--meraki-text);font-size:1rem}.param-key:focus,.param-value:focus{outline:none;border-color:var(--meraki-primary);box-shadow:0 0 0 3px #033f631a}.param-remove{padding:.5rem .75rem;background:transparent;border:1px solid var(--meraki-border);color:var(--meraki-text-secondary);font-size:1.25rem;line-height:1}.param-remove:hover:not(:disabled){background:#dc35451a;border-color:#dc3545;color:#dc3545}.param-remove:disabled{opacity:.3}.add-param-btn{align-self:flex-start;padding:.5rem 1rem;font-size:.875rem;background:transparent;border:1px dashed var(--meraki-border);color:var(--meraki-text-secondary);margin-top:.25rem}.add-param-btn:hover{background:var(--meraki-bg-tertiary);border-color:var(--meraki-primary);color:var(--meraki-primary)}.settings-btn{padding:.5rem;background:transparent;border:1px solid var(--meraki-border);border-radius:10px;color:var(--meraki-text);display:flex;align-items:center;justify-content:center}.settings-btn:hover{background:var(--meraki-bg-tertiary);border-color:var(--meraki-primary)}.settings-btn svg{display:block}.settings-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.settings-modal{background:var(--meraki-bg);border-radius:16px;width:100%;max-width:500px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 4px 24px #00000026}.settings-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid var(--meraki-border)}.settings-header h2{margin:0;font-size:1.5rem;color:var(--meraki-primary)}.close-btn{background:none;border:none;font-size:1.5rem;color:var(--meraki-text-secondary);padding:.25rem .5rem;cursor:pointer}.close-btn:hover{color:var(--meraki-text);background:none}.settings-tabs{display:flex;border-bottom:1px solid var(--meraki-border);padding:0 1rem;overflow-x:auto}.settings-tabs button{background:none;border:none;padding:1rem;color:var(--meraki-text-secondary);font-weight:500;border-bottom:2px solid transparent;border-radius:0;white-space:nowrap}.settings-tabs button:hover{color:var(--meraki-text);background:none}.settings-tabs button.active{color:var(--meraki-primary);border-bottom-color:var(--meraki-primary)}.settings-tabs button.danger-tab{color:#dc3545}.settings-tabs button.danger-tab.active{border-bottom-color:#dc3545}.settings-content{padding:1.5rem;overflow-y:auto;flex:1}.settings-content h3{margin-top:0;margin-bottom:1.5rem;color:var(--meraki-primary)}.settings-content form{display:flex;flex-direction:column;gap:0}.settings-content .button-group{margin-top:1rem}.danger-zone h3{color:#dc3545!important}.danger-warning{background:#dc35451a;border:1px solid rgba(220,53,69,.3);border-radius:10px;padding:1rem;margin-bottom:1.5rem}.danger-warning p{margin:0 0 .5rem}.danger-warning p:last-child{margin-bottom:0}.danger-warning ul,.danger-warning ol{margin:.5rem 0 0;padding-left:1.5rem}.danger-warning li{margin-bottom:.25rem}.hierarchy-list{display:flex;flex-direction:column}.hierarchy-item{border-bottom:1px solid var(--meraki-border)}.hierarchy-item:last-child{border-bottom:none}.hierarchy-row{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;cursor:pointer;transition:background .15s}.hierarchy-row:hover{background:var(--meraki-bg-secondary)}.hierarchy-row.expanded{background:var(--meraki-bg-tertiary)}.org-row{font-weight:500}.network-row{padding-left:2.5rem;font-size:.95rem}.expand-icon{font-size:.75rem;color:var(--meraki-text-secondary);width:1rem;text-align:center;flex-shrink:0}.hierarchy-name{color:var(--meraki-text)}.hierarchy-name.clickable,.device-name.clickable{cursor:pointer;transition:color .15s}.hierarchy-name.clickable:hover,.device-name.clickable:hover{color:var(--meraki-primary);text-decoration:underline}.hierarchy-meta{font-size:.85rem;color:var(--meraki-text-secondary)}.hierarchy-meta.mono{font-family:monospace}.hierarchy-children{border-top:1px solid var(--meraki-border);background:var(--meraki-bg-secondary)}.hierarchy-loading,.hierarchy-empty{padding:1rem 1rem 1rem 3.5rem;color:var(--meraki-text-secondary);font-size:.9rem;font-style:italic}.devices-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.5rem;padding:.75rem .75rem .75rem 3.5rem}.device-card{background:var(--meraki-bg);border:1px solid var(--meraki-border);border-radius:8px;padding:.6rem;transition:border-color .15s,box-shadow .15s}.device-card:hover{border-color:var(--meraki-primary);box-shadow:0 2px 6px #00000014}.device-name{font-weight:500;font-size:.85rem;color:var(--meraki-text);margin-bottom:.35rem;word-break:break-word}.device-details{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.35rem}.device-model{background:#033f631a;color:var(--meraki-primary);padding:.15rem .4rem;border-radius:4px;font-size:.7rem;font-weight:500}.device-ip{color:var(--meraki-text-secondary);font-size:.75rem;font-family:monospace}.device-serial{font-family:monospace;font-size:.7rem;color:var(--meraki-text-secondary)}.devices-section{padding:.5rem 0}.device-type-group{margin-bottom:1rem}.device-type-group:last-child{margin-bottom:0}.device-type-header{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem .5rem 3.5rem;border-bottom:1px solid var(--meraki-border);background:var(--meraki-bg-tertiary)}.device-type-label{font-weight:600;font-size:.85rem;color:var(--meraki-text);text-transform:uppercase;letter-spacing:.025em}.device-type-count{background:var(--meraki-primary);color:#fff;font-size:.7rem;font-weight:600;padding:.15rem .5rem;border-radius:10px}.device-header{display:flex;align-items:center;gap:.4rem;margin-bottom:.35rem}.device-header .device-name{margin-bottom:0}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;position:relative;cursor:help}.status-dot:after{content:attr(data-status);position:absolute;left:50%;bottom:calc(100% + 6px);transform:translate(-50%);background:var(--meraki-text);color:#fff;padding:.25rem .5rem;border-radius:4px;font-size:.7rem;font-weight:500;text-transform:capitalize;white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .15s,visibility .15s;z-index:10}.status-dot:hover:after{opacity:1;visibility:visible}.status-dot.status-online{background:#22c55e;box-shadow:0 0 6px #22c55e80}.status-dot.status-offline{background:#dc3545}.status-dot.status-alerting{background:#f59e0b;box-shadow:0 0 6px #f59e0b80}.status-dot.status-dormant{background:#6b7280}.status-dot.status-unknown{background:#9ca3af}.hierarchy-spacer{flex:1}.status-summary{display:flex;gap:.5rem;align-items:center;flex-shrink:0;margin-left:.5rem}.status-item{display:flex;align-items:center;gap:.2rem}.summary-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.summary-count{font-size:.75rem;font-weight:500;color:var(--meraki-text-secondary)}.status-item.online .summary-dot{background:#22c55e;box-shadow:0 0 4px #22c55e80}.status-item.alerting .summary-dot{background:#f59e0b;box-shadow:0 0 4px #f59e0b80}.status-item.offline .summary-dot{background:#dc3545}.status-item.dormant .summary-dot{background:#6b7280}.header-actions{display:flex;gap:.5rem;align-items:center}.toggle-hidden-btn{padding:.5rem 1rem;font-size:.875rem;background:transparent;border:1px solid var(--meraki-border);color:var(--meraki-text-secondary)}.toggle-hidden-btn:hover{background:var(--meraki-bg-tertiary);border-color:var(--meraki-primary)}.toggle-hidden-btn.active{background:#033f631a;border-color:var(--meraki-primary);color:var(--meraki-primary)}.exclude-btn{padding:.35rem;background:transparent;border:1px solid transparent;color:var(--meraki-text-secondary);opacity:.5;transition:opacity .15s,background .15s,border-color .15s;display:flex;align-items:center;justify-content:center}.exclude-btn svg{display:block}.hierarchy-row:hover .exclude-btn{opacity:1}.exclude-btn:hover{background:#dc35451a;border-color:#dc3545;color:#dc3545}.hierarchy-row.excluded{opacity:.6}.hierarchy-row.excluded .hierarchy-name{text-decoration:line-through;color:var(--meraki-text-secondary)}.hierarchy-checkbox{width:16px;height:16px;margin:0;cursor:pointer;accent-color:var(--meraki-primary);flex-shrink:0}.hierarchy-checkbox:disabled{opacity:.3;cursor:not-allowed}.hierarchy-checkbox.partial{opacity:.7}.device-type-checkbox{width:14px;height:14px;margin:0;margin-right:.5rem;cursor:pointer;accent-color:var(--meraki-primary);flex-shrink:0}.device-type-checkbox.partial{opacity:.7}.device-card.selectable{cursor:pointer;-webkit-user-select:none;user-select:none}.device-card.selected{border-color:#22c55e;background:#22c55e26;box-shadow:0 0 0 1px #22c55e4d}.floating-action-bar{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);background:var(--meraki-bg);border:1px solid var(--meraki-border);border-radius:12px;padding:.75rem 1.25rem;display:flex;align-items:center;gap:1rem;box-shadow:0 4px 20px #00000026;z-index:100;min-width:300px;justify-content:space-between}.selection-count{font-weight:500;color:var(--meraki-text)}.action-buttons{display:flex;gap:.5rem}.clear-btn{padding:.5rem 1rem;background:transparent;border:1px solid var(--meraki-border);color:var(--meraki-text);font-size:.875rem}.clear-btn:hover{background:var(--meraki-bg-tertiary);border-color:var(--meraki-primary)}.reboot-btn{padding:.5rem 1rem;background:#f59e0b;border:none;color:#fff;font-size:.875rem;font-weight:500}.reboot-btn:hover:not(:disabled){background:#d97706}.reboot-btn:disabled{opacity:.7;cursor:not-allowed}.reboot-results{display:flex;align-items:center;gap:1rem}.result-success{color:#22c55e;font-weight:500}.result-failed{color:#dc3545;font-weight:500}.dismiss-btn{padding:.5rem 1rem;background:transparent;border:1px solid var(--meraki-border);color:var(--meraki-text);font-size:.875rem}.dismiss-btn:hover{background:var(--meraki-bg-tertiary)}.mobile-menu-btn{display:none;padding:.5rem;background:transparent;border:1px solid var(--meraki-border);border-radius:10px;color:var(--meraki-text)}.mobile-menu-btn:hover{background:var(--meraki-bg-tertiary);border-color:var(--meraki-primary)}.sidebar-overlay{display:none}@media (max-width: 1024px){.main-content{max-width:100%;padding:1.5rem}.devices-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}@media (max-width: 768px){.app{max-width:100%;padding:1.5rem}.app-logo{max-width:80px}.app-name{font-size:1.5rem}h1{font-size:1.75rem}.auth-container{padding:1.5rem}.header{padding:.75rem 1rem;gap:.5rem}.header-logo{height:28px}.header-name{font-size:1rem}.user-info{gap:.5rem}.user-info>span{display:none}.logout-btn{padding:.4rem .75rem;font-size:.8rem}.mobile-menu-btn{display:flex;align-items:center;justify-content:center}.sidebar{position:fixed;top:0;left:0;bottom:0;width:260px;z-index:1001;transform:translate(-100%);transition:transform .3s ease;box-shadow:2px 0 8px #00000026}.sidebar.open{transform:translate(0)}.sidebar-overlay{display:block;position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:1000;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}.sidebar-overlay.visible{opacity:1;visibility:visible}.sidebar-header{display:flex!important;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--meraki-border)}.sidebar-title{font-weight:600;color:var(--meraki-primary)}.sidebar-close{background:none;border:none;font-size:1.5rem;color:var(--meraki-text-secondary);padding:.25rem;cursor:pointer}.sidebar-close:hover{color:var(--meraki-text);background:none}.main-content{padding:1rem;width:100%}.overview{padding:1rem}.overview h2{font-size:1.25rem}.overview-header{flex-direction:column;align-items:flex-start;gap:.75rem}.header-actions{width:100%;flex-direction:column}.header-actions button{width:100%}.status-summary{order:3;margin-left:1.75rem;margin-top:.25rem}.hierarchy-row{padding:.75rem;gap:.5rem;flex-wrap:wrap}.hierarchy-name{flex:1 1 auto;order:1;margin-left:1.75rem}.hierarchy-spacer{display:none}.hierarchy-meta{font-size:.75rem;order:3;margin-left:1.75rem;flex:1 1 100%}.exclude-btn{order:2;opacity:1}.expand-icon{position:absolute}.org-row{position:relative}.network-row{padding-left:1.5rem;position:relative}.hierarchy-loading,.hierarchy-empty{padding:1rem 1rem 1rem 2rem}.device-type-header{padding-left:1.5rem}.devices-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));padding:.5rem .5rem .5rem 1.5rem}.device-card{padding:.5rem}.api-explorer{padding:1rem}.api-explorer h3{font-size:1.25rem}.request-line{flex-direction:column}.request-line select,.request-line button{width:100%}.param-row{flex-direction:column}.param-key,.param-value{flex:none;width:100%}.param-remove{align-self:flex-end}.body-header{flex-direction:column;align-items:flex-start;gap:.75rem}.body-mode-toggle{width:100%}.body-mode-toggle button{flex:1}.response-body{font-size:.75rem;max-height:300px}.endpoint-hints{font-size:.8rem}.endpoint-hints code{font-size:.75rem;word-break:break-all}.settings-overlay{padding:0}.settings-modal{max-width:100%;max-height:100%;border-radius:0;height:100%}.settings-header{padding:1rem}.settings-header h2{font-size:1.25rem}.settings-tabs{padding:0 .5rem}.settings-tabs button{padding:.75rem .5rem;font-size:.85rem}.settings-content{padding:1rem}button{padding:.65rem 1.25rem}.button-group{flex-direction:column}.button-group button{width:100%}.floating-action-bar{left:1rem;right:1rem;transform:none;min-width:auto;flex-wrap:wrap;bottom:1rem}.selection-count{flex:1 1 100%;text-align:center;margin-bottom:.5rem}.action-buttons{flex:1;justify-content:center}.reboot-results{flex-wrap:wrap;justify-content:center}}@media (max-width: 375px){.app{padding:1rem}.header{padding:.5rem .75rem}.header-name{display:none}.overview,.api-explorer{border-radius:12px}.settings-tabs button{padding:.65rem .35rem;font-size:.8rem}}.mfa-challenge,.mfa-setup,.mfa-email-backup{text-align:center}.mfa-challenge h2,.mfa-setup h3,.mfa-email-backup h2{margin-top:0;color:var(--meraki-primary)}.mfa-description{color:var(--meraki-text-secondary);margin-bottom:1.5rem;line-height:1.5}.mfa-code-input{font-family:monospace;font-size:1.75rem;letter-spacing:.5rem;text-align:center;width:100%;max-width:220px;margin:0 auto;padding:.75rem 1rem;border:2px solid var(--meraki-border);border-radius:12px;background:var(--meraki-bg);color:var(--meraki-text)}.mfa-code-input:focus{outline:none;border-color:var(--meraki-primary);box-shadow:0 0 0 3px #033f631a}.mfa-code-input::placeholder{color:var(--meraki-border);letter-spacing:.5rem}.mfa-qr-container{background:#fff;padding:1.5rem;border-radius:16px;display:inline-block;margin:1rem 0;border:1px solid var(--meraki-border)}.mfa-qr-container svg{display:block;max-width:200px;height:auto}.mfa-manual-entry{margin:1.5rem 0}.mfa-manual-label{font-size:.9rem;color:var(--meraki-text-secondary);margin-bottom:.5rem}.mfa-secret-container{display:flex;align-items:center;gap:.5rem;margin-top:.75rem;justify-content:center;flex-wrap:wrap}.mfa-secret{font-family:monospace;background:var(--meraki-bg-tertiary);padding:.5rem 1rem;border-radius:8px;word-break:break-all;font-size:.875rem;color:var(--meraki-text)}.copy-button{padding:.5rem .75rem;font-size:.8rem;background:transparent;border:1px solid var(--meraki-border);color:var(--meraki-text-secondary)}.copy-button:hover{background:var(--meraki-bg-tertiary);border-color:var(--meraki-primary);color:var(--meraki-primary)}.remember-device{margin:1.25rem 0}.remember-device .checkbox-label{display:flex;align-items:center;justify-content:center;gap:.5rem;cursor:pointer;font-size:.9rem;color:var(--meraki-text-secondary)}.remember-device input[type=checkbox]{width:18px;height:18px;accent-color:var(--meraki-primary);cursor:pointer}.remember-device .checkbox-label span{-webkit-user-select:none;user-select:none}.mfa-alternatives{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--meraki-border)}.link-button{background:transparent!important;border:none;color:var(--meraki-primary);padding:.5rem;cursor:pointer;font-size:.9rem}.link-button:hover{color:var(--meraki-primary-dark);background:transparent!important;text-decoration:underline}.cancel-link{display:block;margin-top:1rem;color:var(--meraki-text-secondary)}.cancel-link:hover{color:var(--meraki-text);background:transparent!important}.mfa-success-icon{color:#22c55e;margin:1rem 0}.mfa-success-icon svg{display:block;margin:0 auto}.mfa-section h3{margin-top:0;margin-bottom:1.5rem;color:var(--meraki-primary)}.mfa-status{margin-bottom:1.5rem}.mfa-status-indicator{margin-bottom:.75rem}.status-badge{display:inline-block;padding:.375rem .75rem;border-radius:20px;font-size:.85rem;font-weight:600}.status-badge.enabled{background:#22c55e26;color:#22c55e}.status-badge.disabled{background:#6b728026;color:#6b7280}.disable-mfa-form{margin-top:1rem;padding:1rem;background:var(--meraki-bg-secondary);border-radius:12px}.warning-text{color:#f59e0b;font-size:.9rem;margin-bottom:1rem}.primary-button{width:100%;padding:.75rem 1.5rem;background:var(--meraki-primary);color:#fff;border:none;border-radius:10px;font-size:1rem;font-weight:500;cursor:pointer;transition:background .2s}.primary-button:hover:not(:disabled){background:var(--meraki-primary-dark)}.primary-button:disabled{opacity:.6;cursor:not-allowed}.mfa-enroll-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--meraki-bg-secondary);padding:1rem}.mfa-enroll-container{background:var(--meraki-bg);border-radius:20px;border:1px solid var(--meraki-border);box-shadow:0 4px 24px #0000001a;width:100%;max-width:450px;overflow:hidden}.mfa-enroll-header{text-align:center;padding:2rem 2rem 0}.mfa-enroll-header h1{font-size:1.75rem;margin:1rem 0 0;color:var(--meraki-primary)}.mfa-enroll-logo{height:60px;width:auto}.mfa-enroll-content{padding:1.5rem 2rem 2rem;text-align:center}.mfa-enroll-icon{margin-bottom:1rem;color:var(--meraki-primary)}.mfa-enroll-icon svg{display:block;margin:0 auto}.mfa-enroll-content h2{font-size:1.25rem;color:var(--meraki-text);margin:0 0 1rem}.mfa-enroll-content p{color:var(--meraki-text-secondary);line-height:1.6;margin:0 0 1rem}.mfa-enroll-content .error{color:#dc3545;margin:1rem 0}.mfa-enroll-footer{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--meraki-border)}.mfa-enroll-footer p{margin-bottom:.5rem;font-size:.9rem}@media (max-width: 768px){.mfa-code-input{font-size:1.5rem;letter-spacing:.35rem;max-width:180px}.mfa-qr-container{padding:1rem}.mfa-qr-container svg{max-width:160px}.mfa-secret{font-size:.75rem;padding:.375rem .75rem}.mfa-enroll-container{max-width:100%;border-radius:16px}.mfa-enroll-header{padding:1.5rem 1.5rem 0}.mfa-enroll-header h1{font-size:1.5rem}.mfa-enroll-logo{height:50px}.mfa-enroll-content{padding:1.25rem 1.5rem 1.5rem}.mfa-enroll-icon svg{width:48px;height:48px}.mfa-enroll-content h2{font-size:1.1rem}.mfa-success-icon svg{width:48px;height:48px}}.settings-page{min-height:100vh;display:flex;flex-direction:column;background:var(--meraki-bg-secondary)}.settings-body{display:flex;flex:1}.settings-sidebar{width:240px;background:var(--meraki-bg);border-right:1px solid var(--meraki-border);padding:1.5rem 0;flex-shrink:0}.settings-nav{display:flex;flex-direction:column;gap:.25rem}.settings-nav-item{display:flex;align-items:center;gap:.75rem;padding:.875rem 1.5rem;background:none;border:none;border-radius:0;color:var(--meraki-text-secondary);font-size:.95rem;font-weight:500;text-align:left;cursor:pointer;transition:background .15s,color .15s}.settings-nav-item:hover{background:var(--meraki-primary);color:#fff}.settings-nav-item.active{background:#033f631a;color:var(--meraki-primary);border-right:3px solid var(--meraki-primary)}.settings-nav-item.danger-item{color:#dc3545}.settings-nav-item.danger-item:hover{background:#dc35451a}.settings-nav-item.danger-item.active{background:#dc35451a;border-right-color:#dc3545}.settings-nav-icon{width:1.5rem;display:flex;align-items:center;justify-content:center}.settings-nav-icon svg{display:block}.settings-nav-label{flex:1}.settings-main{flex:1;padding:2rem;max-width:700px}.settings-panel{background:var(--meraki-bg);border-radius:16px;border:1px solid var(--meraki-border);padding:2rem;box-shadow:0 2px 8px #00000014}.settings-panel h3{margin-top:0;margin-bottom:1.5rem;color:var(--meraki-primary);font-size:1.25rem}.settings-panel .form-group{margin-bottom:1.25rem}.settings-panel .button-group{margin-top:1.5rem}.back-link{display:flex;align-items:center;justify-content:center;padding:.5rem;margin-right:.5rem;border-radius:8px;color:var(--meraki-text-secondary);transition:background .15s,color .15s}.back-link:hover{background:var(--meraki-bg-tertiary);color:var(--meraki-primary)}.back-link svg{display:block}@media (max-width: 768px){.settings-body{flex-direction:column}.settings-sidebar{width:100%;border-right:none;border-bottom:1px solid var(--meraki-border);padding:0}.settings-nav{flex-direction:row;overflow-x:auto;padding:.5rem;gap:.25rem}.settings-nav-item{padding:.75rem 1rem;border-radius:8px;white-space:nowrap;border-right:none!important}.settings-nav-item.active{background:var(--meraki-primary);color:#fff}.settings-nav-item.danger-item.active{background:#dc3545;color:#fff}.settings-nav-icon{display:none}.settings-main{padding:1rem;max-width:100%}.settings-panel{padding:1.5rem}}.footer{margin-top:auto;padding:1.5rem 2rem;background:transparent}.footer-top{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.footer-brand{display:flex;align-items:center;gap:.5rem;text-decoration:none}.footer-logo{height:28px;width:auto}.footer-name{font-size:1rem;font-weight:600;color:var(--meraki-primary)}.footer-made-with{font-size:.875rem;color:var(--meraki-text-muted)}.footer-author-link{color:var(--meraki-primary);text-decoration:none;transition:color .2s}.footer-author-link:hover{text-decoration:underline}.footer-nav{display:flex;gap:1.5rem}.footer-nav a{font-size:.875rem;color:var(--meraki-text-muted);text-decoration:none;transition:color .2s}.footer-nav a:hover{color:var(--meraki-primary)}.footer-bottom{text-align:center;padding-top:1rem}.footer-disclaimer{font-size:.8rem;color:var(--meraki-text-muted);margin:0 0 .25rem}.footer-copyright{font-size:.8rem;color:var(--meraki-text-muted);margin:0}@media (max-width: 768px){.footer{padding:1rem}.footer-top{flex-direction:column;gap:.75rem}.footer-made-with{order:2}.footer-nav{order:3}}.legal-page{min-height:100vh;display:flex;flex-direction:column;background:var(--meraki-bg-secondary)}.legal-header{background:var(--meraki-bg);border-bottom:1px solid var(--meraki-border);padding:1rem 2rem}.legal-back{display:inline-flex;align-items:center;gap:.5rem;color:var(--meraki-text-secondary);text-decoration:none;font-weight:500;transition:color .2s}.legal-back:hover{color:var(--meraki-primary)}.legal-back svg{display:block}.legal-content{flex:1;max-width:800px;margin:0 auto;padding:3rem 2rem;background:var(--meraki-bg)}.legal-content h1{font-size:2.25rem;color:var(--meraki-primary);margin:0 0 .5rem;text-align:center}.legal-updated{text-align:center;color:var(--meraki-text-secondary);font-size:.9rem;margin-bottom:3rem}.legal-section{margin-bottom:2.5rem}.legal-section h2{font-size:1.35rem;color:var(--meraki-text);margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid var(--meraki-border)}.legal-section h3{font-size:1.1rem;color:var(--meraki-text);margin:1.5rem 0 .75rem}.legal-section p{color:var(--meraki-text-secondary);line-height:1.7;margin:0 0 1rem}.legal-section ul,.legal-section ol{color:var(--meraki-text-secondary);line-height:1.7;margin:0 0 1rem;padding-left:1.5rem}.legal-section li{margin-bottom:.5rem}.legal-section strong{color:var(--meraki-text)}.legal-section a{color:var(--meraki-primary);text-decoration:none}.legal-section a:hover{text-decoration:underline}.legal-acknowledgment{background:var(--meraki-bg-tertiary);border-radius:12px;padding:1.5rem;margin-top:3rem}.legal-acknowledgment h2{border-bottom:none;padding-bottom:0;margin-bottom:.75rem}.legal-acknowledgment p{margin:0;font-weight:500;color:var(--meraki-text)}@media (max-width: 768px){.legal-header{padding:1rem}.legal-content{padding:2rem 1.5rem}.legal-content h1{font-size:1.75rem}.legal-updated,.legal-section{margin-bottom:2rem}.legal-section h2{font-size:1.2rem}.legal-section h3{font-size:1rem}.legal-section p,.legal-section ul,.legal-section ol{font-size:.95rem}.legal-acknowledgment{padding:1.25rem}}.header-brand-link{display:flex;align-items:center;gap:.75rem;text-decoration:none;transition:opacity .2s}.header-brand-link:hover{opacity:.8}.app-branding{text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-bottom:1rem}.app-branding:hover{opacity:.9}.landing-branding{text-decoration:none}.landing-branding:hover{opacity:.9}.error-page{min-height:100vh;display:flex;flex-direction:column;background:var(--meraki-bg-secondary)}.error-content{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.error-icon{color:var(--meraki-text-secondary);margin-bottom:1.5rem;opacity:.6}.error-icon svg{display:block}.error-code{font-size:6rem;font-weight:700;color:var(--meraki-primary);margin:0;line-height:1}.error-title{font-size:1.75rem;color:var(--meraki-text);margin:1rem 0 .75rem}.error-message{font-size:1.1rem;color:var(--meraki-text-secondary);max-width:400px;line-height:1.6;margin:0 0 2rem}.error-actions{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center}.error-btn{padding:.75rem 1.5rem;border-radius:10px;font-size:1rem;font-weight:500;text-decoration:none;cursor:pointer;transition:background .2s,transform .2s}.error-btn.primary{background:var(--meraki-primary);color:#fff;border:none}.error-btn.primary:hover{background:var(--meraki-primary-dark);transform:translateY(-2px)}.error-btn.secondary{background:transparent;color:var(--meraki-text);border:1px solid var(--meraki-border)}.error-btn.secondary:hover{background:var(--meraki-bg-tertiary);border-color:var(--meraki-primary)}@media (max-width: 768px){.error-code{font-size:4rem}.error-title{font-size:1.5rem}.error-message{font-size:1rem}.error-icon svg{width:60px;height:60px}.error-actions{flex-direction:column;width:100%;max-width:280px}.error-btn{width:100%;text-align:center}}
