body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*{box-sizing:border-box;margin:0;padding:0}body{background-color:#f5f5f5;color:#333;font-family:Noto Sans KR,sans-serif;line-height:1.6}.app-container{display:flex;flex-direction:column;min-height:100vh}.main-content{flex:1 1;margin:0 auto;max-width:1200px;padding:20px;width:100%}.card{background-color:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px;overflow:hidden;transition:transform .3s ease,box-shadow .3s ease}.card:hover{box-shadow:0 5px 15px #0000001a;transform:translateY(-5px)}.btn{background-color:#3498db;border:none;border-radius:4px;color:#fff;cursor:pointer;display:inline-block;font-size:16px;padding:10px 20px;text-decoration:none;transition:background-color .3s}.btn:hover{background-color:#2980b9}.btn-danger{background-color:#e74c3c}.btn-danger:hover{background-color:#c0392b}.btn-success{background-color:#2ecc71}.btn-success:hover{background-color:#27ae60}.section-title{border-bottom:2px solid #3498db;margin-bottom:20px;padding-bottom:10px}.loading{color:#7f8c8d;font-size:18px}.spinner{border:4px solid #0000001a;border-left-color:#3498db;height:30px;margin-right:10px;width:30px}.error-message{border-radius:4px;margin-bottom:20px;padding:15px}.grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}@media (max-width:768px){.grid{grid-template-columns:1fr}.main-content{padding:10px}}.navbar{background-color:#2c3e50;box-shadow:0 2px 10px #0000001a;height:80px;justify-content:center;position:sticky;top:0;z-index:999}.navbar,.navbar-container{align-items:center;display:flex}.navbar-container{justify-content:space-between;max-width:1200px;padding:0 20px;width:100%}.navbar-logo{align-items:center;color:#fff;display:flex;font-size:2rem;font-weight:700;text-decoration:none}.navbar-logo .highlight{color:#3498db;margin-left:2px}.nav-menu{display:flex;list-style:none;text-align:center}.nav-item{height:80px;margin-right:10px}.nav-item,.nav-link{align-items:center;display:flex}.nav-link{color:#fff;font-size:1.2rem;height:100%;padding:0 15px;text-decoration:none;transition:all .3s ease}.nav-link.active,.nav-link:hover{border-bottom:4px solid #3498db;color:#3498db}.menu-icon{color:#fff;cursor:pointer;display:none;font-size:1.8rem}@media screen and (max-width:768px){.navbar-logo{left:0;position:absolute;top:0;transform:translate(25%,50%)}.menu-icon{cursor:pointer;display:block;font-size:1.8rem;position:absolute;right:0;top:0;transform:translate(-100%,60%)}.nav-menu{background-color:#2c3e50;display:flex;flex-direction:column;height:90vh;left:-100%;position:absolute;top:80px;width:100%}.nav-menu,.nav-menu.active{opacity:1;transition:all .5s ease}.nav-menu.active{left:0;z-index:1}.nav-item{border-bottom:1px solid #34495e;height:60px;margin:0;width:100%}.nav-link{display:table;padding:2rem;text-align:center;width:100%}.nav-link:hover{color:#3498db}.nav-link.active,.nav-link:hover{border-bottom:none;border-left:4px solid #3498db}}.footer{background-color:#2c3e50;color:#ecf0f1;margin-top:40px;padding:40px 0 20px}.footer-container{margin:0 auto;max-width:1200px;padding:0 20px}.footer-content{display:flex;flex-wrap:wrap;justify-content:space-between;margin-bottom:30px}.footer-section{flex:1 1;margin-bottom:20px;min-width:250px;padding-right:20px}.footer-title{color:#3498db;font-size:1.2rem;font-weight:600;margin-bottom:15px;padding-bottom:10px;position:relative}.footer-title:after{background-color:#3498db;bottom:0;content:"";height:2px;left:0;position:absolute;width:30px}.footer-links{list-style:none;padding:0}.footer-links li{margin-bottom:10px}.footer-links a{color:#bdc3c7;text-decoration:none;transition:color .3s}.footer-links a:hover{color:#3498db}.emergency-contacts{list-style:none;padding:0}.emergency-contacts li{margin-bottom:10px}.emergency-contacts strong{color:#e74c3c;margin-right:5px}.footer-bottom{border-top:1px solid #34495e;color:#95a5a6;font-size:.9rem;padding-top:20px;text-align:center}.footer-bottom p{margin-bottom:10px}@media screen and (max-width:768px){.footer-content{flex-direction:column}.footer-section{margin-bottom:30px;padding-right:0;width:100%}}.home-container{padding-bottom:40px}.hero-section{background:linear-gradient(#2c3e50e6,#2c3e50e6),url(https://via.placeholder.com/1200x600) 50%/cover no-repeat;border-radius:10px;color:#fff;margin-bottom:40px;padding:80px 20px;text-align:center}.hero-title{font-size:2.5rem;font-weight:700;margin-bottom:20px}.hero-subtitle{font-size:1.2rem;margin-bottom:30px;margin-left:auto;margin-right:auto;max-width:700px}.hero-buttons{display:flex;flex-wrap:wrap;gap:20px;justify-content:center}.btn-primary{background-color:#3498db;border-radius:30px;font-weight:600;padding:12px 30px;text-decoration:none}.btn-primary:hover{background-color:#2980b9;box-shadow:0 5px 15px #0003;transform:translateY(-3px)}.btn-secondary{background-color:initial;border:2px solid #3498db;border-radius:30px;font-weight:600;padding:12px 30px;text-decoration:none}.btn-secondary:hover{background-color:#3498db;box-shadow:0 5px 15px #0003;transform:translateY(-3px)}.features-section{padding:40px 0}.section-title{color:#2c3e50;font-size:2rem;font-weight:600;margin-bottom:40px;position:relative;text-align:center}.section-title:after{background-color:#3498db;bottom:-10px;content:"";height:3px;left:50%;position:absolute;transform:translateX(-50%);width:60px}.features-grid{grid-gap:30px;display:grid;gap:30px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-top:40px}.feature-card{background-color:#fff;border-radius:10px;box-shadow:0 5px 15px #0000001a;padding:30px;text-align:center;transition:all .3s ease}.feature-card:hover{box-shadow:0 10px 20px #00000026;transform:translateY(-10px)}.feature-icon{color:#3498db;font-size:3rem;margin-bottom:20px}.feature-title{color:#2c3e50;font-size:1.5rem;margin-bottom:15px}.feature-description{color:#7f8c8d;line-height:1.6;margin-bottom:20px}.feature-link{color:#3498db;display:inline-block;font-weight:600;position:relative;text-decoration:none;transition:all .3s ease}.feature-link:after{background-color:#3498db;bottom:-5px;content:"";height:2px;left:0;position:absolute;transform:scaleX(0);transform-origin:bottom right;transition:transform .3s ease;width:100%}.feature-link:hover:after{transform:scaleX(1);transform-origin:bottom left}.emergency-section{background-color:#f9f9f9;border-radius:10px;margin-top:40px;padding:40px 20px}.emergency-cards{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-top:40px}.emergency-card{background-color:#fff;border-radius:10px;box-shadow:0 5px 15px #0000001a;padding:30px;text-align:center;transition:all .3s ease}.emergency-card:hover{box-shadow:0 10px 20px #00000026;transform:translateY(-5px)}.emergency-icon{color:#e74c3c;font-size:2.5rem;margin-bottom:15px}.emergency-title{color:#2c3e50;font-size:1.3rem;margin-bottom:10px}.emergency-number{color:#e74c3c;font-size:2rem;font-weight:700;margin-bottom:15px}.emergency-description{color:#7f8c8d;font-size:.9rem}@media screen and (max-width:768px){.hero-title{font-size:2rem}.hero-section{padding:60px 15px}.emergency-cards{grid-template-columns:1fr}}.missing-persons-page{background:linear-gradient(135deg,#f5f7fa,#c3cfe2);font-family:Noto Sans KR,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;margin:0 auto;max-width:1200px;min-height:100vh;padding:20px}.page-header{background-color:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 10px 30px #667eea4d;padding:40px 20px}.page-title{-webkit-text-fill-color:#0000;background:linear-gradient(45deg,#fff,#f0f3ff);-webkit-background-clip:text;background-clip:text;font-size:2.5rem;margin-bottom:15px;text-shadow:0 2px 4px #0000001a}.page-description{font-size:1.2rem;line-height:1.6;max-width:800px;opacity:.95}.search-panel{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2;border:1px solid #fff3;border-radius:20px;box-shadow:0 8px 32px #0000001a;margin-bottom:30px;padding:30px;transition:all .3s ease}.search-panel:hover{box-shadow:0 12px 40px #00000026;transform:translateY(-2px)}.search-row{align-items:center}.form-control:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.checkbox-group{background:#f7fafc;border:2px solid #e2e8f0;padding:12px 16px}.checkbox-group:hover{background:#edf2f7;border-color:#cbd5e0}.checkbox-group input[type=checkbox]{accent-color:#667eea;margin-right:8px;transform:scale(1.2)}.reset-button,.search-button{border:none;border-radius:12px;box-shadow:0 4px 12px #00000026;cursor:pointer;font-size:.95rem;font-weight:600;letter-spacing:.5px;padding:12px 24px;text-transform:uppercase;transition:all .3s ease}.search-button{background:linear-gradient(135deg,#667eea,#764ba2)}.search-button:hover{box-shadow:0 6px 20px #667eea66}.controls-bar{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe6;border-radius:16px;box-shadow:0 6px 25px #0000001a;padding:20px 25px}.refresh-button{background:linear-gradient(135deg,#00cec9,#55a3ff);box-shadow:0 4px 15px #00cec94d}.refresh-button:hover{box-shadow:0 6px 20px #00cec966;transform:translateY(-2px)}.info-text{font-size:.95rem}.error-message{padding:20px 25px}.api-limit-message{background:linear-gradient(135deg,#fdcb6e,#fd79a8);border-radius:16px;box-shadow:0 8px 30px #fdcb6e4d;color:#fff;margin-bottom:25px;padding:25px;text-align:center}.api-limit-message h3{font-size:1.3rem;font-weight:700;margin:0 0 10px}.api-limit-message p{font-size:1rem;line-height:1.5;margin:8px 0;opacity:.95}.loading:before{border-top-color:#667eea}.persons-grid{grid-gap:25px;display:grid;gap:25px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));padding:20px 0}.person-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2;border:1px solid #ffffff4d;border-radius:20px;box-shadow:0 8px 32px #0000001a;cursor:pointer;overflow:hidden;padding:25px;position:relative;transition:all .3s ease}.person-card:before{background:linear-gradient(90deg,#667eea,#764ba2,#00cec9);content:"";height:4px;left:0;position:absolute;top:0;transform:scaleX(0);transition:transform .3s ease;width:100%}.person-card:hover:before{transform:scaleX(1)}.person-card:hover{box-shadow:0 15px 40px #0003;transform:translateY(-8px)}.person-card-image{border:4px solid #f1f5f9;border-radius:50%;box-shadow:0 6px 20px #0000001a;height:100px;margin:0 auto 20px;overflow:hidden;transition:all .3s ease;width:100px}.person-card:hover .person-card-image{border-color:#667eea;transform:scale(1.05)}.person-image{height:100%;object-fit:cover;transition:transform .3s ease;width:100%}.no-image-placeholder{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;height:100%;justify-content:center;width:100%}.placeholder-content{text-align:center}.gender-icon{font-size:2rem;margin-bottom:5px}.person-card-content{text-align:center}.person-name{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;background-clip:text;color:#2d3748;font-size:1.3rem;font-weight:700;margin-bottom:15px}.person-info{margin-bottom:20px}.person-info p{color:#64748b;font-size:.95rem;font-weight:500;margin:8px 0}.person-feature{background:#f7fafc;border-left:4px solid #667eea;border-radius:12px;color:#4a5568;font-size:.9rem;line-height:1.4;margin-bottom:15px;padding:12px}.view-details{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:12px;box-shadow:0 4px 15px #667eea4d;color:#fff;cursor:pointer;font-size:.9rem;font-weight:600;padding:10px 20px;transition:all .3s ease;width:100%}.view-details:hover{box-shadow:0 6px 20px #667eea66;transform:translateY(-2px)}.person-details-modal{align-items:center;animation:modalFadeIn .3s ease;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:9999}.modal-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000b3}.modal-content{border:1px solid #fff6;box-shadow:0 25px 80px #0006;overflow-y:auto;transition:all .3s ease;width:92%}.modal-header{overflow:hidden;position:relative}.modal-header:before{background:linear-gradient(45deg,#ffffff1a,#0000);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.modal-title{font-size:1.6rem;text-shadow:0 2px 4px #0003}.close-button{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:2px solid #ffffff4d;height:44px;width:44px}.close-button:hover{box-shadow:0 4px 12px #0000004d;transform:rotate(90deg) scale(1.1)}.modal-info-grid{grid-gap:30px;display:grid;gap:30px;grid-template-columns:1fr;margin-bottom:25px}.person-header-section{align-items:center;background:linear-gradient(135deg,#f8fafc,#e2e8f0);border:1px solid #fffc;border-radius:20px;box-shadow:0 4px 15px #0000001a;display:flex;gap:25px;padding:25px;position:relative}.person-header-section:before{background:linear-gradient(45deg,#fff9,#0000);border-radius:20px;bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.person-image-container{flex-shrink:0;position:relative}.person-detail-image{border:4px solid #fff;border-radius:16px;box-shadow:0 8px 25px #0003;height:150px;object-fit:cover;transition:all .3s ease;width:120px}.person-detail-image:hover{box-shadow:0 12px 35px #0000004d;transform:scale(1.05)}.placeholder-content.large{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border:4px solid #fff;border-radius:16px;box-shadow:0 8px 25px #667eea4d;color:#fff;display:flex;flex-direction:column;height:150px;justify-content:center;width:120px}.gender-icon.large{font-size:3rem;text-shadow:0 2px 4px #0000004d}.person-basic-info{display:flex;flex:1 1;flex-direction:column;gap:8px}.person-name-large{color:#2d3748;font-size:1.8rem;font-weight:800;margin:0;text-shadow:0 1px 2px #0000001a}.person-basic-details{display:flex;flex-wrap:wrap;gap:15px;margin-top:8px}.basic-detail-item{align-items:center;background:#fffc;border:1px solid #667eea33;border-radius:12px;color:#4a5568;display:flex;font-size:.9rem;font-weight:600;gap:8px;padding:8px 12px}.basic-detail-item .detail-icon{color:#667eea;font-size:1.1rem}.info-sections{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.info-section{background:#fff;border:1px solid #0000000d;border-radius:16px;box-shadow:0 4px 15px #0000001a;padding:20px;transition:all .3s ease}.info-section:hover{box-shadow:0 8px 25px #00000026;transform:translateY(-2px)}.info-section-header{align-items:center;border-bottom:2px solid #e2e8f0;display:flex;gap:12px;margin-bottom:15px;padding-bottom:8px}.section-icon{color:#667eea;font-size:1.4rem}.section-title{color:#2d3748;font-size:1.2rem;font-weight:700;margin:0}.info-items{display:flex;flex-direction:column;gap:12px}.info-item{align-items:center;border-bottom:1px solid #0000000d;display:flex;gap:12px;padding:10px 0}.info-item:last-child{border-bottom:none}.info-item-icon{color:#64748b;font-size:1.1rem;text-align:center;width:20px}.info-item-content{flex:1 1}.info-item-label{color:#64748b;font-size:.85rem;font-weight:600;margin-bottom:2px}.info-item-value{color:#2d3748;font-size:.95rem;font-weight:500}.info-item-value.no-data{color:#a0aec0;font-style:italic}.feature-section{background:linear-gradient(135deg,#f7fafc,#edf2f7);border-left:4px solid #667eea;grid-column:1/-1}.feature-text{color:#4a5568;font-size:.95rem;line-height:1.6;margin:0;padding:10px 0}.report-info{background:linear-gradient(135deg,#e3f2fd,#f3e5f5);border-left:4px solid #667eea;border-radius:16px;box-shadow:0 4px 15px #0000001a;margin-top:25px;padding:25px}.report-info h4{align-items:center;color:#2d3748;display:flex;font-size:1.1rem;font-weight:700;gap:10px;margin-bottom:15px}.report-info h4:before{content:"📞";font-size:1.3rem}.report-contacts{display:flex;flex-direction:column;gap:10px;margin-bottom:15px}.report-contact{align-items:center;background:#fffc;border:1px solid #667eea33;border-radius:12px;display:flex;gap:12px;padding:12px 16px}.report-contact-icon{color:#667eea;font-size:1.2rem}.report-contact-info{flex:1 1}.report-contact-label{color:#64748b;font-size:.85rem;font-weight:600;margin-bottom:2px}.report-contact-number{color:#2d3748;font-size:1rem;font-weight:700}.report-tip{background:#fff9;border-left:3px solid #667eea;border-radius:12px;color:#4a5568;font-size:.9rem;line-height:1.6;margin:0;padding:12px 16px}.modal-footer{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-radius:0 0 24px 24px}.close-button-footer{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:14px;box-shadow:0 4px 15px #667eea4d;letter-spacing:.5px;padding:14px 32px;text-transform:uppercase}.close-button-footer:hover{box-shadow:0 8px 25px #667eea66}@media (max-width:768px){.missing-persons-page{padding:15px}.page-header{margin-bottom:30px;padding:30px 20px}.page-title{font-size:2rem}.search-panel{padding:20px}.controls-bar{align-items:stretch;flex-direction:column;gap:15px;padding:20px}.refresh-button{width:100%}.info-text,.last-updated-text{text-align:center;width:100%}.modal-info-grid{grid-template-columns:1fr;text-align:center}.search-row{align-items:stretch;flex-direction:column}.form-group{min-width:100%}.button-group{justify-content:center;margin-left:0}.reset-button,.search-button{flex:1 1}.persons-grid{gap:20px;grid-template-columns:1fr}.modal-content{max-height:95vh;width:95%}.modal-header{padding:20px}.modal-title{font-size:1.4rem}.modal-body{padding:20px}.person-header-section{flex-direction:column;gap:20px;text-align:center}.person-basic-details{justify-content:center}.info-sections{grid-template-columns:1fr}.info-section{padding:15px}.modal-footer{padding:20px}}@media (max-width:480px){.missing-persons-page{padding:10px}.page-title{font-size:1.7rem}.search-panel{padding:15px}.persons-grid{gap:15px}.person-card{padding:20px}.modal-content{border-radius:16px;width:98%}.modal-header{border-radius:16px 16px 0 0;padding:15px}.modal-title{font-size:1.2rem}.modal-body,.person-header-section{padding:15px}.person-name-large{font-size:1.5rem}.person-detail-image,.placeholder-content.large{height:125px;width:100px}.basic-detail-item{font-size:.85rem;padding:6px 10px}.info-section{padding:12px}.close-button-footer{font-size:.9rem;padding:12px 24px}}.info-table .section-header{background:linear-gradient(135deg,#667eea,#764ba2)}.info-table .section-header th{color:#fff;font-size:1rem;font-weight:700;padding:15px;text-align:center}.info-table .no-data{color:#64748b;font-style:italic;padding:20px;text-align:center}.person-image{transition:all .3s ease}.person-image.loading{filter:blur(2px);opacity:.7}.person-image.loaded{filter:none;opacity:1}.debug-info{background:#f8f9fa;border-left:4px solid #17a2b8;border-radius:12px;color:#6c757d;display:none;font-size:.85rem;margin-top:20px;padding:15px}.debug-info.visible{display:block}.close-button,.close-button-footer,.close-button-footer:hover,.close-button:hover{border:none;outline:none}@media (max-width:768px){.info-table .section-header th{font-size:.9rem;padding:12px}}.disaster-search-panel{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2;border:1px solid #fff3;border-radius:20px;box-shadow:0 8px 32px #0000001a;margin-bottom:30px;padding:30px}.search-group{background-color:#fff;border:1px solid #f1f5f9;border-radius:16px;box-shadow:0 4px 15px #00000014;margin-bottom:25px;padding:20px}.search-group-title{border-bottom:2px solid #e2e8f0;color:#2d3748;font-size:1.1rem;font-weight:600;margin-bottom:20px;padding-bottom:10px}.search-form{display:flex;flex-direction:column;gap:20px}.search-row{display:flex;flex-wrap:wrap;gap:20px}.form-group{min-width:200px}.form-group label{color:#4a5568}.form-control{background:#fff;border:2px solid #e2e8f0;border-radius:12px;box-shadow:0 2px 4px #0000000d;font-size:14px;padding:12px 16px;transition:all .3s ease;width:100%}.form-control:focus{border-color:#e17055;box-shadow:0 0 0 3px #e170551a;outline:none;transform:translateY(-1px)}.checkbox-group{align-items:center;background:#fef5f3;border:2px solid #fed7d1;border-radius:12px;display:flex;flex-wrap:wrap;gap:8px;margin-top:25px;padding:16px 20px;transition:all .3s ease}.checkbox-group:hover{background:#fef2f0;border-color:#fdc2ba}.checkbox-group input{accent-color:#e17055;margin-right:12px;transform:scale(1.2)}.checkbox-group label{color:#c53030;font-size:1rem;font-weight:600;margin-bottom:0;margin-right:15px}.checkbox-hint{color:#e17055;display:block;font-size:.85rem;font-style:italic;margin-top:8px;opacity:.8;width:100%}.button-group{display:flex;gap:12px;margin-left:auto;margin-top:20px}.filter-reset-button,.reset-button,.search-button{border:none;border-radius:12px;box-shadow:0 4px 12px #00000026;cursor:pointer;font-size:.95rem;font-weight:600;letter-spacing:.5px;padding:12px 24px;text-transform:uppercase;transition:all .3s ease}.search-button{background:linear-gradient(135deg,#e17055,#fd79a8);color:#fff}.search-button:hover{box-shadow:0 6px 20px #e1705566;transform:translateY(-2px)}.filter-reset-button{background:linear-gradient(135deg,#81ecec,#74b9ff);color:#fff}.filter-reset-button:hover{box-shadow:0 6px 20px #81ecec66;transform:translateY(-2px)}.reset-button{background:linear-gradient(135deg,#fd79a8,#fdcb6e);color:#fff}.reset-button:hover{box-shadow:0 6px 20px #fd79a866;transform:translateY(-2px)}.search-tips{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-left:4px solid #e17055;border-radius:16px;box-shadow:0 4px 15px #0000000d;margin-top:30px;padding:20px}.search-tips h3{color:#4a5568;font-size:1.1rem;font-weight:600;margin-bottom:15px}.search-tips ul{color:#64748b;font-size:.95rem;line-height:1.6;padding-left:20px}.search-tips li{margin-bottom:8px}.search-tips strong{color:#e17055;font-weight:600}@media (max-width:768px){.disaster-search-panel{padding:20px}.search-group{padding:15px}.search-row{flex-direction:column;gap:15px}.form-group{min-width:100%}.button-group{flex-wrap:wrap;justify-content:center;margin-left:0;width:100%}.filter-reset-button,.reset-button,.search-button{flex:1 1;font-size:.9rem;min-width:120px;padding:12px 16px}.checkbox-group{margin-top:20px;padding:12px 16px}.checkbox-group label{font-size:.95rem}.checkbox-hint{font-size:.8rem}}.disaster-card{background-color:#fff;border:1px solid #eaecef;border-radius:10px;box-shadow:0 3px 8px #00000014;cursor:pointer;display:flex;flex-direction:column;height:100%;overflow:hidden;transition:transform .3s ease,box-shadow .3s ease}.disaster-card:hover{box-shadow:0 8px 15px #0000001f;transform:translateY(-5px)}.disaster-card.missing-person{border-left:4px solid #e74c3c}.disaster-card-header{align-items:center;background-color:#f8f9fa;border-bottom:1px solid #eaecef;display:flex;justify-content:space-between;padding:12px 16px}.disaster-type{background-color:#e9ecef;border-radius:20px;color:#2c3e50;font-size:.9rem;font-weight:600;padding:4px 10px}.missing-person .disaster-type{background-color:#e74c3c;color:#fff}.disaster-date{color:#6c757d;font-size:.85rem}.disaster-card-body{border-bottom:1px solid #eaecef;flex:1 1;padding:16px}.disaster-message{color:#343a40;font-size:.95rem;line-height:1.6;margin:0}.view-more{color:#3498db;display:inline-block;font-size:.85rem;font-weight:500;margin-top:8px}.disaster-card-footer{align-items:center;background-color:#fafafa;display:flex;font-size:.85rem;justify-content:space-between;padding:12px 16px}.agency-info{align-items:center;background-color:#f1f3f5;border:1px solid #dee2e6;border-radius:16px;display:flex;padding:4px 10px}.agency-label{color:#495057;font-weight:500;margin-right:5px}.agency-name{color:#2c3e50;font-weight:600}.missing-person .agency-info{background-color:#fef2f2;border-color:#fad7d7}.missing-person .agency-name{color:#e74c3c}.disaster-region{background-color:#e9ecef;border-radius:16px;color:#6c757d;font-size:.8rem;max-width:40%;overflow:hidden;padding:4px 10px;text-overflow:ellipsis;white-space:nowrap}.highlight{background-color:#ffe066;border-radius:2px;padding:0 2px}@media (max-width:768px){.disaster-card-header{padding:10px 14px}.disaster-card-body{padding:14px}.disaster-message{font-size:.9rem}.disaster-card-footer{flex-wrap:wrap;font-size:.8rem;padding:10px 14px}.agency-info{margin-bottom:8px}.disaster-region{margin-top:6px;max-width:100%}}.disaster-messages-list{padding-bottom:40px;position:relative}.messages-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));margin-top:20px}.loading{background-color:#f8f9fa;color:#6c757d;height:200px;justify-content:center}.error-message,.loading{border-radius:10px;margin:20px 0}.error-message{background-color:#f8d7da;border-left:5px solid #dc3545;box-shadow:0 2px 4px #0000001a;color:#721c24;padding:20px}.no-results{background-color:#f8f9fa;border:1px dashed #dee2e6;border-radius:10px;margin:20px 0;padding:60px 30px}.no-results h3{color:#343a40}.no-results p{color:#6c757d;margin:0 auto 12px;max-width:500px}.message-details-modal{align-items:center;animation:modalFadeIn .3s ease;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:9999}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.modal-overlay{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0009;height:100%;left:0;position:absolute;top:0;width:100%}.modal-content{background:#fff;border:1px solid #ffffff4d;border-radius:24px;box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;max-height:90vh;max-width:700px;overflow:hidden;position:relative;width:90%;z-index:1001}.modal-header{background:linear-gradient(135deg,#e17055,#fd79a8);border-bottom:1px solid #e2e8f0;border-radius:24px 24px 0 0;padding:25px 30px}.modal-title{align-items:center;display:flex;font-size:1.5rem;font-weight:700;gap:12px;margin:0}.missing-badge{background:#fff3;border:1px solid #ffffff4d;border-radius:20px;color:#fff;font-size:.85rem;font-weight:600;padding:6px 12px}.close-button{background:#fff3;height:40px;transition:all .3s ease;width:40px}.close-button:hover{background:#ffffff4d;transform:rotate(90deg)}.modal-body{flex:1 1;overflow-y:auto;padding:30px}.modal-footer{background:#f8fafc;border-top:1px solid #e2e8f0;padding:25px 30px;text-align:center}.close-button-footer{background:linear-gradient(135deg,#e17055,#fd79a8);border:none;border-radius:12px;box-shadow:0 4px 15px #e170554d;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:12px 30px;transition:all .3s ease}.close-button-footer:hover{box-shadow:0 6px 20px #e1705566;transform:translateY(-2px)}.message-info{display:flex;flex-direction:column;gap:25px}.message-header-info{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 4px 15px #0000000d;padding:25px}.message-header-info p{color:#2d3748;font-size:.95rem;line-height:1.6;margin:0 0 15px}.message-header-info p:last-child{margin-bottom:0}.message-header-info strong{color:#4a5568;font-weight:700;margin-right:8px}.message-content{margin-top:15px}.message-content h4{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#e17055,#fd79a8);-webkit-background-clip:text;background-clip:text;border-bottom:2px solid #e2e8f0;color:#2d3748;font-size:1.3rem;font-weight:700;margin-bottom:20px;padding-bottom:12px}.message-text{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 4px 15px #0000000d;color:#2d3748;font-size:1.05rem;line-height:1.8;padding:25px;white-space:pre-line}.missing-person-info{background:linear-gradient(135deg,#fef2f2,#fef5f5);border:1px solid #fed7d1;border-radius:16px;box-shadow:0 4px 15px #e74c3c1a;margin-top:25px;padding:25px}.missing-person-info h4{border-bottom:2px solid #fed7d1;color:#c53030;font-size:1.3rem;font-weight:700;margin-bottom:20px;padding-bottom:12px}.missing-person-info p{color:#4a5568;font-size:1rem;line-height:1.7;margin-bottom:20px}.contact-info{background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 4px 15px #00000014;list-style:none;padding:20px}.contact-info li{font-size:.95rem;line-height:1.6;margin-bottom:15px;padding-left:30px;position:relative}.contact-info li:last-child{margin-bottom:0}.contact-info li:before{content:"📞";font-size:1rem;left:8px;position:absolute}.contact-info strong{color:#2d3748;font-weight:700;margin-right:8px}@media (max-width:768px){.messages-grid{gap:16px;grid-template-columns:1fr}.modal-content{border-radius:20px;max-height:85vh;width:95%}.modal-header{border-radius:20px 20px 0 0;padding:20px}.modal-title{font-size:1.3rem}.missing-badge{font-size:.8rem;padding:4px 8px}.message-text{font-size:1rem;padding:20px}.modal-body,.modal-footer{padding:20px}.contact-info{padding:15px}.contact-info li{font-size:.9rem;padding-left:25px}.message-content h4,.missing-person-info h4{font-size:1.2rem}}.disaster-messages-page{font-family:Noto Sans KR,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;margin:0 auto;max-width:1200px;min-height:100vh;padding:20px}.page-header{word-wrap:break-word;border-radius:20px;box-shadow:0 10px 30px #e170554d;margin-bottom:40px;min-height:auto;overflow:visible;overflow-wrap:break-word;padding:70px 40px 80px;transform:translateY(0);transition:all .3s ease}.page-header:hover{box-shadow:0 15px 40px #e1705566;transform:translateY(-5px)}.page-title{color:#fff;font-size:2.2rem;font-weight:700;letter-spacing:-.5px;line-height:1.4;margin-bottom:30px;overflow:visible;text-shadow:0 2px 8px #0003;white-space:normal;word-break:keep-all}.page-description{box-sizing:border-box;color:#fffffff2;font-size:1.1rem;line-height:1.8;margin:0 auto;overflow:visible;padding:0 40px;text-align:center;width:100%;word-break:break-word}.cache-status-info{display:flex;flex-wrap:wrap;font-size:.9rem;gap:8px;justify-content:center;margin-top:15px}.cache-badge{align-items:center;border-radius:20px;box-shadow:0 2px 8px #0000001a;display:inline-flex;font-size:.85rem;font-weight:600;padding:6px 12px;transition:all .3s ease;white-space:nowrap}.cache-badge.cache-hit{animation:cache-success-pulse 2s ease-in-out;background:#fffffff2;border:2px solid #27ae604d;color:#27ae60}.cache-badge.cache-miss{background:#fffffff2;border:2px solid #f39c124d;color:#f39c12}.controls-bar{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:#fffffff2;border:1px solid #ffffff4d;border-radius:20px;box-shadow:0 8px 32px #0000001f;gap:15px;justify-content:space-between;margin:30px 0;padding:25px 30px}.controls-bar,.refresh-buttons{align-items:center;display:flex;flex-wrap:wrap}.refresh-buttons{gap:12px}.refresh-button{background:linear-gradient(135deg,#3498db,#2980b9);border-radius:12px;box-shadow:0 4px 15px #3498db4d;font-size:.95rem;font-weight:600;letter-spacing:.5px;overflow:hidden;padding:12px 20px;position:relative;text-transform:uppercase;transition:all .3s ease}.refresh-button:hover:not(:disabled){background:linear-gradient(135deg,#2980b9,#1a5490);box-shadow:0 6px 20px #3498db66;transform:translateY(-2px)}.refresh-button:disabled{background:linear-gradient(135deg,#95a5a6,#7f8c8d);box-shadow:0 2px 8px #95a5a64d;transform:none}.force-refresh-button{align-items:center;background:linear-gradient(135deg,#27ae60,#229954);border:none;border-radius:12px;box-shadow:0 4px 15px #27ae604d;color:#fff;cursor:pointer;display:flex;font-size:.95rem;font-weight:600;gap:6px;letter-spacing:.5px;overflow:hidden;padding:12px 20px;position:relative;text-transform:uppercase;transition:all .3s ease}.force-refresh-button:hover:not(:disabled){background:linear-gradient(135deg,#229954,#1e8449);box-shadow:0 6px 20px #27ae6066;transform:translateY(-2px)}.force-refresh-button:disabled{background:linear-gradient(135deg,#95a5a6,#7f8c8d);box-shadow:0 2px 8px #95a5a64d;cursor:not-allowed;transform:none}.info-text{color:#64748b;flex:1 1;font-size:.87rem;font-weight:500;min-width:200px;text-align:center}.last-updated-text{align-items:center;color:#64748b;display:flex;flex-wrap:wrap;font-size:.9rem;font-style:italic;gap:8px;justify-content:center;opacity:.8}.cache-update-info{color:#27ae60;font-style:normal;font-weight:600}.cache-details{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe6;border:1px solid #3498db33;border-radius:12px;box-shadow:0 4px 15px #00000014;color:#64748b;display:flex;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,monospace;font-size:.85rem;gap:12px;margin-bottom:20px;padding:12px 20px;transition:all .3s ease}.cache-details:hover{background:#fffffff2;box-shadow:0 6px 20px #0000001f;transform:translateY(-1px)}.cache-details:before{content:"ℹ️";font-size:1.1rem;opacity:.8}.error-message{background:linear-gradient(135deg,#ff7675,#fd79a8);border-left:4px solid #d63031;border-radius:16px;box-shadow:0 6px 25px #ff76754d;color:#fff;font-weight:500;margin-bottom:25px;overflow:hidden;padding:25px 30px;position:relative}.error-message:before{font-size:1.2rem;margin-right:10px}.force-refresh-button:disabled:after,.refresh-button:disabled:after{animation:button-spin 1s linear infinite;border:2px solid #0000;border-radius:50%;border-top-color:currentcolor;bottom:0;content:"";height:16px;left:0;margin:auto;position:absolute;right:0;top:0;width:16px}@keyframes button-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes cache-success-pulse{0%,to{box-shadow:0 2px 8px #27ae6033;transform:scale(1)}50%{box-shadow:0 4px 15px #27ae6066;transform:scale(1.05)}}.loading{color:#64748b;font-size:1.2rem;font-weight:500;padding:60px}.loading:before{animation:spin 1s linear infinite;border:4px solid #e2e8f0;border-radius:50%;border-top-color:#e17055;content:"";display:inline-block;height:40px;margin-bottom:20px;width:40px}.no-results{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe6;border:1px solid #ffffff4d;border-radius:20px;box-shadow:0 8px 32px #0000001a;color:#64748b;padding:60px 40px;text-align:center}.no-results h3{color:#4a5568;font-size:1.5rem;font-weight:600;margin-bottom:15px}.no-results p{font-size:1.1rem;line-height:1.6}@media (prefers-color-scheme:dark){.controls-bar{background:#34495ef2;border-color:#ffffff1a}.cache-details{background:#34495ee6;border-color:#ffffff1a;color:#bdc3c7}.cache-badge.cache-hit{background:#2ecc7133;border-color:#2ecc7166;color:#2ecc71}.cache-badge.cache-miss{background:#f1c40f33;border-color:#f1c40f66;color:#f1c40f}.info-text,.last-updated-text{color:#bdc3c7}.cache-update-info{color:#2ecc71}.no-results{background:#34495ee6;color:#bdc3c7}.no-results h3{color:#ecf0f1}}@media (max-width:768px){.disaster-messages-page{padding:15px}.page-header{margin-bottom:30px;padding:50px 25px 60px}.page-title{font-size:1.8rem;line-height:1.5;margin-bottom:25px}.page-description{font-size:1rem;line-height:1.7;max-width:600px;padding:0 15px}.cache-status-info{align-items:center;flex-direction:column;gap:6px}.controls-bar{align-items:stretch;flex-direction:column;gap:15px;padding:20px}.refresh-buttons{justify-content:center;width:100%}.force-refresh-button,.refresh-button{flex:1 1;min-width:120px}.info-text{min-width:auto;order:1;text-align:center}.last-updated-text{flex-direction:column;gap:4px;justify-content:center;order:2}.cache-details{flex-direction:column;gap:8px;text-align:center}}@media (max-width:480px){.disaster-messages-page{padding:10px}.page-header{padding:45px 20px 55px}.page-title{font-size:1.6rem;line-height:1.6;margin-bottom:22px}.page-description{font-size:.95rem;line-height:1.6;max-width:450px;padding:0 10px}.controls-bar{padding:15px}.refresh-buttons{flex-direction:column;gap:10px;width:100%}.cache-badge,.force-refresh-button,.refresh-button{justify-content:center;width:100%}.cache-badge{text-align:center}.cache-details{font-size:.8rem;padding:10px 15px}}@media (prefers-reduced-motion:reduce){.cache-details,.force-refresh-button,.page-header,.refresh-button{transition:none}.cache-badge.cache-hit,.force-refresh-button:disabled:after,.refresh-button:disabled:after{animation:none}}.cache-details:focus,.force-refresh-button:focus,.refresh-button:focus{outline:2px solid #3498db;outline-offset:2px}.missing-person-registration-page{font-family:Noto Sans KR,sans-serif;margin:0 auto;max-width:800px;padding:20px}.page-header{background-color:#2c3e50;border-radius:12px;box-shadow:0 4px 15px #0000001a;color:#fff;padding:20px}.page-header h1{font-size:2rem;font-weight:700;margin:0 0 10px}.page-header p{font-size:1.1rem;opacity:.9}.registration-container{background:#fff;border-radius:16px;box-shadow:0 8px 32px #0000001a;overflow:hidden}.registration-form{padding:30px}.message-type-toggle{margin-bottom:30px;text-align:center}.message-type-toggle h3{color:#333;font-size:1.2rem;font-weight:600;margin-bottom:15px}.toggle-buttons{display:flex;gap:10px;justify-content:center;margin-bottom:20px}.toggle-btn{background:#fff;border:2px solid #e1e5e9;border-radius:25px;color:#666;cursor:pointer;font-size:1rem;font-weight:500;min-width:120px;padding:12px 24px;transition:all .3s ease}.toggle-btn:hover{border-color:#667eea;color:#667eea;transform:translateY(-2px)}.toggle-btn.active{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#667eea;box-shadow:0 4px 15px #667eea4d;color:#fff}.image-upload-section{margin-bottom:30px}.image-upload-section h3{color:#333;font-size:1.2rem;font-weight:600;margin-bottom:15px}.image-upload-container{align-items:center;display:flex;flex-wrap:wrap;gap:20px}.image-preview-area{align-items:center;background:#f8f9fa;border:3px dashed #ddd;border-radius:12px;display:flex;height:128px;justify-content:center;overflow:hidden;transition:all .3s ease;width:128px}.image-preview-area:hover{background:#f0f3ff;border-color:#667eea}.image-preview{border-radius:8px;height:100%;object-fit:cover;width:100%}.image-placeholder{color:#999;text-align:center}.placeholder-icon{font-size:2rem;margin-bottom:8px}.image-placeholder p{font-size:.9rem;margin:0}.image-input{display:none}.image-upload-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;display:inline-block;font-size:1rem;font-weight:500;padding:12px 24px;transition:all .3s ease}.image-upload-btn:hover{box-shadow:0 6px 20px #667eea4d;transform:translateY(-2px)}.info-input-section{min-height:192px}.info-input-section h3{color:#333;font-size:1.2rem;font-weight:600;margin-bottom:20px}.info-form-container{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr}.info-form-container.disaster-form{grid-template-columns:1fr}.form-group.full-width{grid-column:1/-1}.form-group label{font-size:.95rem}.form-group input,.form-group select,.form-group textarea{border:2px solid #e1e5e9;border-radius:8px;font-family:inherit;font-size:1rem;padding:12px 16px;transition:all .3s ease}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group textarea{min-height:100px;resize:vertical}.disaster-preview{background:#f8f9fa;border:2px solid #e9ecef;border-radius:12px;margin-top:20px;padding:20px}.disaster-preview h4{color:#333;font-size:1.1rem;font-weight:600;margin:0 0 15px}.preview-content{background:#fff;border-left:4px solid #667eea;border-radius:8px;padding:15px}.preview-content p{font-size:.95rem;line-height:1.5;margin:8px 0}.preview-content strong{color:#333;font-weight:600}.form-actions{text-align:center}.register-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;min-width:200px;padding:16px 40px;transition:all .3s ease}.register-btn:hover:not(:disabled){box-shadow:0 8px 25px #667eea4d;transform:translateY(-2px)}.register-btn:disabled{cursor:not-allowed;opacity:.6;transform:none}.submit-message{border-radius:8px;font-size:1rem;font-weight:500;margin-top:20px;padding:15px 20px;text-align:center}.submit-message.success{background:#d4edda;border:1px solid #c3e6cb;color:#155724}.submit-message.error{background:#f8d7da;border:1px solid #f5c6cb;color:#721c24}@media (max-width:768px){.missing-person-registration-page{padding:15px}.page-header h1{font-size:1.6rem}.page-header p{font-size:1rem}.registration-form{padding:20px}.image-upload-container{align-items:center;flex-direction:column}.info-form-container{gap:15px;grid-template-columns:1fr}.toggle-buttons{align-items:center;flex-direction:column}.toggle-btn{width:200px}.register-btn{min-width:auto;width:100%}}@media (max-width:480px){.page-header h1{font-size:1.4rem}.registration-form{padding:15px}.image-preview-area{height:100px;width:100px}.form-group input,.form-group select,.form-group textarea{font-size:.95rem;padding:10px 12px}}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.missing-person-registration-page{animation:fadeIn .5s ease-out}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db1a;outline:none}.form-group label:after{color:#e74c3c;content:" *";font-weight:700}.form-group:has(input:not([required])) label:after,.form-group:has(select:not([required])) label:after,.form-group:has(textarea:not([required])) label:after{content:""}.text-editor-section{background:#f8f9fa;border:1px solid #dee2e6;border-radius:8px;margin:2rem 0;padding:1.5rem}.text-editor-section h3{color:#2c3e50;font-size:1.2rem;font-weight:600;margin:0 0 1.5rem}.text-style-controls{background:#fff;border:1px solid #e9ecef;border-radius:8px;display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:1.5rem;padding:1rem}.control-group{align-items:center;display:flex;gap:.5rem}.control-group label{color:#495057;font-size:.9rem;font-weight:600;min-width:50px}.control-group select{background-color:#fff;border:1px solid #ced4da;border-radius:4px;font-size:.9rem;min-width:120px;padding:.5rem .75rem}.control-group input[type=color]{background:none;border:1px solid #ced4da;border-radius:4px;cursor:pointer;height:32px;width:40px}.formatting-buttons{align-items:center;display:flex;gap:.5rem}.format-btn{align-items:center;background-color:#fff;border:1px solid #ced4da;border-radius:4px;cursor:pointer;display:flex;font-size:14px;height:32px;justify-content:center;transition:all .2s ease;width:32px}.format-btn:hover{background-color:#f8f9fa;border-color:#3498db}.format-btn.active{background-color:#3498db;border-color:#3498db;color:#fff}.format-btn:focus{box-shadow:0 0 0 2px #3498db33;outline:none}.text-input-container{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:1fr 1fr;margin-top:1rem}.text-input-area{display:flex;flex-direction:column}.text-input{border:1px solid #ced4da;border-radius:6px;font-family:Arial,sans-serif;font-size:1rem;min-height:120px;padding:1rem;resize:vertical;transition:border-color .2s,box-shadow .2s;width:100%}.text-input:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db1a;outline:none}.text-preview-area{display:flex;flex-direction:column;gap:.5rem}.text-preview-area h4{color:#495057;font-size:1rem;font-weight:600;margin:0}.text-preview{border-radius:6px;box-shadow:0 2px 4px #0000001a;font-weight:500;line-height:1.2;margin:0 auto}.preview-hint{color:#6c757d;font-size:.85rem;margin-top:.5rem;text-align:center}@media (max-width:768px){.text-style-controls{flex-direction:column;gap:1rem}.control-group{justify-content:space-between}.text-input-container{gap:1rem;grid-template-columns:1fr}.text-preview{height:192px!important;max-width:128px;width:100%!important}}.device-control-page{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;margin:0 auto;max-width:1400px;padding:20px}.page-header{margin-bottom:30px;text-align:center}.page-header h1{color:#fff;font-size:2.5em;margin-bottom:10px}.page-header p{color:#7f8c8d;font-size:1.1em;margin:0}.device-control-container{grid-gap:30px;display:grid;gap:30px;grid-template-columns:1fr 1fr;min-height:600px}.device-list{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;padding:20px}.section-header{border-bottom:2px solid #ecf0f1;padding-bottom:15px}.section-header h2{color:#2c3e50;font-size:1.8em;margin:0}.section-header h3{color:#34495e;font-size:1.3em}.header-buttons{display:flex;gap:12px}.add-device-button{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:.9rem;font-weight:600;gap:8px;padding:10px 20px;transition:all .2s ease}.add-device-button:hover{box-shadow:0 4px 12px #667eea4d;transform:translateY(-2px)}.add-device-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.refresh-button{background:#3498db;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1em;padding:10px 20px;transition:background-color .3s}.refresh-button:hover{background:#2980b9}.refresh-button:disabled{background:#bdc3c7;cursor:not-allowed}.no-devices{color:#7f8c8d;padding:40px;text-align:center}.devices-grid{display:flex;flex-direction:column;gap:15px;max-height:500px;overflow-y:auto}.device-card{background:#f8f9fa;border:2px solid #ecf0f1;border-radius:10px;cursor:pointer;padding:20px;transition:all .3s}.device-card:hover{border-color:#3498db;box-shadow:0 4px 8px #0000001a;transform:translateY(-2px)}.device-card.selected{background:#e8f5e8;border-color:#2ecc71}.device-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:15px}.device-title{display:flex;flex-direction:column;gap:8px}.device-header h3{color:#2c3e50;font-size:1.3em;margin:0}.delete-device-button{align-items:center;background:linear-gradient(135deg,#e74c3c,#c0392b);border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:.9rem;height:40px;justify-content:center;min-width:40px;padding:8px 12px;transition:all .2s ease}.delete-device-button:hover{box-shadow:0 4px 12px #e74c3c4d;transform:translateY(-2px)}.delete-device-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.status-badge{border-radius:20px;font-size:.9em;padding:5px 12px}.status-badge.online{background:#d4edda;color:#155724}.status-badge.offline{background:#f8d7da;color:#721c24}.device-info{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr}.device-info p{color:#34495e;font-size:.9em;margin:0}.device-info strong{color:#2c3e50}.device-control-panel{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;padding:20px}.control-sections{display:flex;flex-direction:column;gap:25px}.control-section{background:#f8f9fa;border:1px solid #ecf0f1;border-radius:10px;padding:20px}.control-section h4{color:#2c3e50;font-size:1.2em;margin:0 0 15px}.brightness-control{display:flex;flex-direction:column;gap:15px}.brightness-info{color:#34495e;font-size:1.1em;font-weight:700;text-align:center}.brightness-slider{-webkit-appearance:none;appearance:none;background:#ddd;border-radius:5px;height:8px;outline:none;transition:background .3s;width:100%}.brightness-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#f39c12;border-radius:50%;cursor:pointer;height:20px;width:20px}.brightness-slider::-moz-range-thumb{background:#f39c12;border:none;border-radius:50%;cursor:pointer;height:20px;width:20px}.brightness-labels{color:#7f8c8d;display:flex;font-size:.9em;justify-content:space-between}.power-control{display:flex;flex-direction:column;gap:15px}.power-status{color:#34495e;font-size:1.1em;font-weight:700;text-align:center}.power-buttons{display:flex;gap:15px}.power-button{border:none;border-radius:10px;cursor:pointer;flex:1 1;font-size:1em;font-weight:700;padding:15px;transition:all .3s}.power-button.on{background:#ecf0f1;color:#2c3e50}.power-button.on.active{background:#2ecc71;color:#fff}.power-button.off{background:#ecf0f1;color:#2c3e50}.power-button.off.active{background:#e74c3c;color:#fff}.power-button:hover{box-shadow:0 4px 8px #0003;transform:translateY(-2px)}.power-button:disabled{background:#bdc3c7;box-shadow:none;color:#7f8c8d;cursor:not-allowed;transform:none}.status-info{display:flex;flex-direction:column;gap:15px}.status-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:1fr 1fr}.status-item{background:#fff;border:1px solid #ecf0f1;border-radius:8px;display:flex;flex-direction:column;gap:5px;padding:12px}.status-label{color:#7f8c8d;font-size:.9em;font-weight:700}.status-value{color:#2c3e50;font-size:1.1em;font-weight:700}.status-value.online{color:#27ae60}.status-value.offline{color:#e74c3c}.refresh-status-button{background:#9b59b6;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1em;padding:12px 20px;transition:background-color .3s}.refresh-status-button:hover{background:#8e44ad}.refresh-status-button:disabled{background:#bdc3c7;cursor:not-allowed}.error,.loading{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:60px;text-align:center}.loading .spinner,.loading-spinner .spinner{animation:spin 1s linear infinite;border:4px solid #f3f3f3;border-radius:50%;border-top-color:#3498db;height:40px;margin-bottom:20px;width:40px}.loading p,.loading-spinner p{color:#7f8c8d;font-size:1.1em;margin:0}.error h2{color:#e74c3c;font-size:2em;margin-bottom:15px}.error p{color:#7f8c8d;font-size:1.1em;margin-bottom:20px}.retry-button{background:#e74c3c;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1em;padding:12px 24px;transition:background-color .3s}.retry-button:hover{background:#c0392b}.loading-overlay{height:100%;width:100%}.loading-spinner{box-shadow:0 8px 16px #0000004d;padding:40px}.brightness-buttons{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:15px 0}.brightness-button{background:linear-gradient(145deg,#f8f9fa,#e9ecef);border:2px solid #ddd;border-radius:8px;cursor:pointer;font-size:14px;font-weight:700;min-width:40px;padding:8px 12px;transition:all .3s ease}.brightness-button:hover{background:linear-gradient(145deg,#e9ecef,#dee2e6);border-color:#007bff;transform:translateY(-2px)}.brightness-button.active{background:linear-gradient(145deg,#007bff,#0056b3);border-color:#007bff;box-shadow:0 4px 12px #007bff4d;color:#fff}.brightness-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.brightness-button.level-1.active{background:linear-gradient(145deg,#6c757d,#5a6268)}.brightness-button.level-2.active{background:linear-gradient(145deg,#6f7c8a,#5d6975)}.brightness-button.level-3.active{background:linear-gradient(145deg,#17a2b8,#138496)}.brightness-button.level-4.active{background:linear-gradient(145deg,#20c997,#1b9e77)}.brightness-button.level-5.active{background:linear-gradient(145deg,#28a745,#1e7e34)}.brightness-button.level-6.active{background:linear-gradient(145deg,#ffc107,#d39e00)}.brightness-button.level-7.active{background:linear-gradient(145deg,#fd7e14,#d15600)}.brightness-button.level-8.active{background:linear-gradient(145deg,#dc3545,#b21f2d)}.brightness-button.level-9.active{background:linear-gradient(145deg,#e83e8c,#c3205a)}.brightness-button.level-10.active{background:linear-gradient(145deg,#6610f2,#4a0da1)}.power-schedule-form{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;margin:15px 0;padding:20px}.schedule-time-inputs{display:flex;gap:20px;margin-bottom:20px}.time-input-group{flex:1 1}.time-input-group label{color:#495057;display:block;font-weight:700;margin-bottom:5px}.time-input-group input[type=time]{border:1px solid #ced4da;border-radius:6px;font-size:14px;padding:8px 12px;transition:border-color .3s ease;width:100%}.time-input-group input[type=time]:focus{border-color:#007bff;box-shadow:0 0 0 2px #007bff40;outline:none}.schedule-days{margin-bottom:20px}.schedule-days label{color:#495057;display:block;font-weight:700;margin-bottom:10px}.days-buttons{display:flex;flex-wrap:wrap;gap:5px}.day-button{background:#fff;border:1px solid #ced4da;border-radius:6px;cursor:pointer;font-size:12px;min-width:40px;padding:6px 12px;transition:all .3s ease}.day-button:hover{background:#f8f9fa;border-color:#007bff}.day-button.active{background:#007bff;border-color:#007bff;color:#fff}.day-button:disabled{cursor:not-allowed;opacity:.6}.schedule-options{margin-bottom:20px}.checkbox-label{align-items:center;color:#495057;cursor:pointer;display:flex;font-weight:400;gap:8px}.checkbox-label input[type=checkbox]{cursor:pointer;height:16px;width:16px}.add-schedule-button{background:linear-gradient(145deg,#28a745,#1e7e34);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:700;padding:12px;transition:all .3s ease;width:100%}.add-schedule-button:hover{background:linear-gradient(145deg,#1e7e34,#155724);transform:translateY(-2px)}.add-schedule-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.existing-schedules{margin-top:20px}.existing-schedules h5{color:#495057;margin-bottom:15px}.no-schedules{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;color:#6c757d;padding:30px}.no-schedules p{font-style:italic;margin-bottom:15px}.refresh-schedules-button{background:#6c757d;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:background .3s ease}.refresh-schedules-button:hover{background:#5a6268}.refresh-schedules-button:disabled{cursor:not-allowed;opacity:.6}.schedule-list{gap:10px}.schedule-item{border:1px solid #e9ecef;transition:all .3s ease}.schedule-item:hover{border-color:#007bff;box-shadow:0 2px 8px #007bff26}.schedule-times{display:flex;gap:15px;margin-bottom:8px}.off-time,.on-time{font-size:14px;font-weight:700}.on-time{color:#28a745}.off-time{color:#dc3545}.schedule-days{color:#6c757d;font-size:12px;margin-bottom:8px}.schedule-options{align-items:center;display:flex;gap:10px}.repeat-badge{background:#007bff;color:#fff}.repeat-badge,.status-badge{border-radius:4px;font-size:10px;font-weight:700;padding:2px 6px}.status-badge.enabled{background:#28a745;color:#fff}.delete-schedule-button,.status-badge.disabled{background:#dc3545;color:#fff}.delete-schedule-button{border:none;border-radius:6px;cursor:pointer;font-size:14px;padding:8px 12px;transition:all .3s ease}.delete-schedule-button:hover{background:#c82333;transform:translateY(-2px)}.delete-schedule-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.emergency-control{background:#fff3cd;border:1px solid #ffeaa7;border-radius:8px;margin-top:20px;padding:20px}.emergency-control h5{color:#856404;margin-bottom:15px}.emergency-power-off-button{background:linear-gradient(145deg,#dc3545,#c82333);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:700;margin-bottom:10px;padding:12px 24px;transition:all .3s ease;width:100%}.emergency-power-off-button:hover{background:linear-gradient(145deg,#c82333,#a71e2a);transform:translateY(-2px)}.emergency-power-off-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.emergency-note{color:#856404;font-size:12px;font-style:italic;margin:0;text-align:center}@media (max-width:1024px){.device-control-container{gap:20px;grid-template-columns:1fr}.device-info,.status-grid{grid-template-columns:1fr}}@media (max-width:768px){.device-control-page{padding:15px}.page-header h1{font-size:2em}.section-header{align-items:flex-start;gap:10px}.power-buttons,.section-header{flex-direction:column}.device-card{padding:15px}.schedule-time-inputs{flex-direction:column;gap:15px}.brightness-buttons,.days-buttons{justify-content:center}.brightness-button{min-width:35px;padding:6px 10px}.schedule-item{align-items:flex-start;flex-direction:column;gap:10px}.schedule-info{width:100%}.delete-schedule-button{align-self:flex-end}}@media (max-width:480px){.page-header h1{font-size:1.8em}.device-control-page{padding:10px}.control-section,.device-control-panel,.device-list{padding:15px}}.test-section{background:linear-gradient(135deg,#fff3cd,#ffeaa7);border:2px solid #ffc107;border-radius:12px;margin-top:20px;padding:20px}.test-section h4{align-items:center;color:#856404;display:flex;font-weight:600;gap:8px;margin-bottom:15px}.test-controls{display:flex;flex-direction:column;gap:15px}.test-info{background:#ffffffb3;border:1px solid #ffc107;border-radius:8px;padding:12px}.test-info p{color:#856404;font-size:13px;line-height:1.4;margin:0}.test-info p:first-child{font-weight:600;margin-bottom:4px}.test-buttons{display:flex;flex-wrap:wrap;gap:10px}.test-button{align-items:center;border:none;border-radius:8px;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:6px;justify-content:center;min-width:140px;padding:10px 16px;transition:all .2s ease}.test-button:disabled{cursor:not-allowed;opacity:.6}.test-button.force-online{background:linear-gradient(135deg,#28a745,#20c997);box-shadow:0 2px 4px #28a7454d;color:#fff}.test-button.force-online:hover:not(:disabled){background:linear-gradient(135deg,#218838,#1ea97c);box-shadow:0 4px 8px #28a74566;transform:translateY(-1px)}.test-button.force-offline{background:linear-gradient(135deg,#dc3545,#fd7e14);box-shadow:0 2px 4px #dc35454d;color:#fff}.test-button.force-offline:hover:not(:disabled){background:linear-gradient(135deg,#c82333,#e55a4e);box-shadow:0 4px 8px #dc354566;transform:translateY(-1px)}.test-button.mqtt-status{background:linear-gradient(135deg,#007bff,#6610f2);box-shadow:0 2px 4px #007bff4d;color:#fff}.test-button.mqtt-status:hover:not(:disabled){background:linear-gradient(135deg,#0056b3,#520dc2);box-shadow:0 4px 8px #007bff66;transform:translateY(-1px)}.test-status{background:#fffc;border:1px solid #ffc107;border-radius:8px;padding:15px}.forced-status-warning{background:linear-gradient(135deg,#ff6b6b,#feca57);border-radius:6px;box-shadow:0 2px 4px #ff6b6b4d;color:#fff;font-size:13px;font-weight:600;margin-bottom:10px;padding:8px 12px;text-align:center}.test-device-info{display:flex;flex-direction:column;gap:4px}.test-device-info p{color:#856404;display:flex;font-size:13px;justify-content:space-between;margin:0}.test-device-info strong{color:#6c4f01}@media (max-width:768px){.test-buttons{flex-direction:column}.test-button{min-width:100%}.test-device-info p{flex-direction:column;gap:2px}}.device-add-modal-overlay{align-items:center;background-color:#000000b3;bottom:0;display:flex;justify-content:center;left:0;overflow-y:auto;padding:20px;position:fixed;right:0;top:0;z-index:1000}.device-add-modal{background:#fff;border-radius:12px;box-shadow:0 10px 30px #0000004d;max-height:90vh;max-width:900px;overflow-y:auto;position:relative;width:100%}.modal-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-bottom:1px solid #eee;border-radius:12px 0 0 0;color:#fff;display:flex;justify-content:space-between;padding:20px 30px}.modal-header h2{font-size:1.5rem;font-weight:600;margin:0}.close-button{align-items:center;background:none;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:1.5rem;height:35px;justify-content:center;padding:5px;transition:all .2s ease;width:35px}.close-button:hover{background:#fff3;transform:scale(1.1)}.device-add-form{padding:30px}.form-section{background:#f8f9fa;border-left:4px solid #667eea;border-radius:8px;margin-bottom:30px;padding:20px}.form-section h3{color:#333;font-size:1.2rem;font-weight:600;margin:0 0 20px}.form-row{display:flex;gap:20px;margin-bottom:20px}.form-row:last-child{margin-bottom:0}.form-group{display:flex;flex:1 1;flex-direction:column}.form-group.full-width{flex:1 1 100%}.form-group label{color:#333;font-size:.9rem;font-weight:600;margin-bottom:5px}.form-group input,.form-group select{background:#fff;border:2px solid #ddd;border-radius:6px;font-size:.9rem;padding:12px;transition:all .2s ease}.form-group input:focus,.form-group select:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.form-group input.error,.form-group select.error{background:#fff5f5;border-color:#e74c3c}.error-message{align-items:center;color:#e74c3c;display:flex;font-size:.8rem;gap:5px;margin-top:5px}.error-message:before{content:"⚠️";font-size:.8rem}.submit-error{background:#fff5f5;border:1px solid #e74c3c;border-radius:6px;font-size:.9rem;margin-bottom:20px;padding:12px}.submit-error:before{content:"❌";margin-right:8px}.form-actions{align-items:center;border-top:1px solid #eee;justify-content:space-between;margin-top:30px;padding-top:20px}.test-device-button{align-items:center;background:linear-gradient(135deg,#ffeaa7,#fab1a0);border:none;border-radius:6px;color:#333;cursor:pointer;display:flex;font-size:.9rem;font-weight:600;gap:8px;padding:12px 24px;transition:all .2s ease}.test-device-button:hover{box-shadow:0 4px 12px #fab1a04d;transform:translateY(-2px)}.test-device-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.action-buttons{display:flex;gap:12px}.cancel-button{background:#95a5a6;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:600;padding:12px 24px;transition:all .2s ease}.cancel-button:hover{background:#7f8c8d;transform:translateY(-2px)}.cancel-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.submit-button{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:.9rem;font-weight:600;gap:8px;padding:12px 24px;transition:all .2s ease}.submit-button:hover{box-shadow:0 4px 12px #667eea4d;transform:translateY(-2px)}.submit-button:disabled{cursor:not-allowed;opacity:.6;transform:none}@media (max-width:768px){.device-add-modal-overlay{padding:10px}.device-add-modal{max-height:95vh;max-width:100%}.modal-header{padding:15px 20px}.modal-header h2{font-size:1.3rem}.device-add-form{padding:20px}.form-section{margin-bottom:20px;padding:15px}.form-row{flex-direction:column;gap:15px}.form-group label{font-size:.85rem}.form-group input,.form-group select{font-size:.85rem;padding:10px}.form-actions{align-items:stretch;flex-direction:column;gap:15px}.test-device-button{justify-content:center;order:1;width:100%}.action-buttons{flex-direction:column;gap:10px;order:2}.cancel-button,.submit-button{justify-content:center;width:100%}}@media (max-width:480px){.device-add-modal-overlay{padding:5px}.modal-header{padding:10px 15px}.modal-header h2{font-size:1.1rem}.device-add-form{padding:15px}.form-section{padding:10px}.form-section h3{font-size:1rem}.form-group input,.form-group select{font-size:.8rem;padding:8px}}.schedule-manager{background:#f8f9fa;border:1px solid #ecf0f1;border-radius:10px;padding:20px}.schedule-header{align-items:center;border-bottom:2px solid #ecf0f1;display:flex;justify-content:space-between;margin-bottom:20px;padding-bottom:15px}.schedule-header h3{color:#2c3e50;font-size:1.3em;margin:0}.add-schedule-btn{background:#27ae60;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.9em;font-weight:700;padding:10px 18px;transition:background-color .3s}.add-schedule-btn:hover{background:#229954}.add-schedule-btn:disabled{background:#bdc3c7;cursor:not-allowed}.schedule-form{background:#fff;border:1px solid #ddd;border-radius:8px;margin-bottom:20px;padding:20px}.schedule-form h4{color:#2c3e50;font-size:1.1em;margin:0 0 20px}.form-group{margin-bottom:15px}.form-group label{color:#34495e;display:block;font-size:.9em;font-weight:700;margin-bottom:8px}.form-input,.form-select{border:1px solid #ddd;border-radius:6px;font-size:1em;padding:10px 12px;transition:border-color .3s;width:100%}.form-input:focus,.form-select:focus{border-color:#3498db;box-shadow:0 0 0 2px #3498db1a;outline:none}.days-selector{display:flex;flex-wrap:wrap;gap:8px}.day-btn{background:#ecf0f1;border:1px solid #bdc3c7;border-radius:6px;color:#2c3e50;cursor:pointer;font-size:.9em;font-weight:700;min-width:40px;padding:8px 12px;transition:all .3s}.day-btn:hover{background:#d5dbdb}.day-btn.active{background:#3498db;border-color:#2980b9;color:#fff}.form-actions{display:flex;gap:10px;margin-top:20px}.save-btn{background:#27ae60;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:1em;font-weight:700;padding:12px 20px;transition:background-color .3s}.save-btn:hover{background:#229954}.save-btn:disabled{background:#bdc3c7;cursor:not-allowed}.cancel-btn{background:#95a5a6;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:1em;font-weight:700;padding:12px 20px;transition:background-color .3s}.cancel-btn:hover{background:#7f8c8d}.cancel-btn:disabled{background:#bdc3c7;cursor:not-allowed}.schedule-list{gap:12px;max-height:400px;overflow-y:auto}.loading,.schedule-list{display:flex;flex-direction:column}.loading{align-items:center;padding:40px;text-align:center}.loading .spinner{animation:spin 1s linear infinite;border:3px solid #f3f3f3;border-radius:50%;border-top-color:#3498db;height:30px;margin-bottom:15px;width:30px}.loading p{color:#7f8c8d;font-size:.9em;margin:0}.no-schedules{color:#7f8c8d;font-style:italic;padding:40px;text-align:center}.schedule-item{align-items:center;background:#fff;border:1px solid #ecf0f1;border-radius:8px;display:flex;justify-content:space-between;padding:15px;transition:all .3s}.schedule-item:hover{border-color:#bdc3c7;box-shadow:0 2px 8px #0000001a}.schedule-info{display:flex;flex:1 1;flex-direction:column;gap:8px}.schedule-main{align-items:center;display:flex;gap:15px}.schedule-time{color:#2c3e50;font-size:1.2em;font-weight:700;min-width:60px}.schedule-action{background:#ecf0f1;border-radius:4px;color:#34495e;font-size:1em;font-weight:700;padding:4px 10px}.schedule-details{align-items:center;display:flex;font-size:.85em;gap:15px}.schedule-days{color:#7f8c8d}.schedule-status{border-radius:12px;font-size:.8em;font-weight:700;padding:3px 8px}.schedule-status.enabled{background:#d4edda;color:#155724}.schedule-status.disabled{background:#f8d7da;color:#721c24}.schedule-actions{display:flex;gap:8px}.delete-btn{background:#e74c3c;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.9em;font-weight:700;padding:8px 15px;transition:background-color .3s}.delete-btn:hover{background:#c0392b}.delete-btn:disabled{background:#bdc3c7;cursor:not-allowed}@media (max-width:768px){.schedule-header{align-items:flex-start;flex-direction:column;gap:10px}.add-schedule-btn{width:100%}.days-selector{justify-content:center}.form-actions{flex-direction:column}.schedule-item{gap:15px}.schedule-item,.schedule-main{align-items:flex-start;flex-direction:column}.schedule-main{gap:8px;width:100%}.schedule-details{align-items:flex-start;flex-direction:column;gap:5px}.schedule-actions{justify-content:flex-end;width:100%}}@media (max-width:480px){.schedule-form,.schedule-manager{padding:15px}.day-btn{font-size:.8em;min-width:35px;padding:6px 10px}.schedule-time{font-size:1.1em}.schedule-action{font-size:.9em}}.weather-page{background-color:#f8fafc;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;margin:0 auto;max-width:1400px;min-height:100vh;padding:20px}.weather-header{background-color:#2c3e50;border-radius:12px;box-shadow:0 4px 6px #0000001a;color:#fff;margin-bottom:30px;padding:20px;text-align:center;transform:translateY(0);transition:all .3s ease}.weather-header h1{font-size:2.5em;font-weight:600;margin:0 0 10px}.weather-header p{font-size:1.1em;margin:0;opacity:.9}.weather-header:hover{transform:translateY(-5px)}.weather-tabs{background:#fff;border-radius:12px;box-shadow:0 2px 4px #0000001a;display:flex;gap:8px;margin-bottom:20px;padding:8px}.tab-button{background:#0000;border:none;border-radius:8px;color:#64748b;cursor:pointer;flex:1 1;font-size:14px;font-weight:500;padding:12px 16px;transition:all .3s ease}.tab-button:hover{background:#f1f5f9;color:#475569}.tab-button.active{background:#3b82f6;box-shadow:0 2px 4px #3b82f64d;color:#fff}.tab-content{background:#fff;border-radius:12px;box-shadow:0 2px 4px #0000001a;padding:24px}.alert{border-radius:8px;font-weight:500;margin-bottom:20px;padding:12px 16px}.alert-error{background:#fef2f2;border:1px solid #fecaca;color:#dc2626}.alert-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#16a34a}.section-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.section-header h3{color:#1e293b;font-size:1.5em;margin:0}.btn-primary{background:#3b82f6;border:none;border-radius:8px;color:#fff;cursor:pointer;font-weight:500;padding:12px 20px;transition:all .3s ease}.btn-primary:hover:not(:disabled){background:#2563eb;box-shadow:0 4px 8px #3b82f64d;transform:translateY(-1px)}.btn-secondary{background:#6b7280;border:none;border-radius:8px;color:#fff;cursor:pointer;font-weight:500;padding:12px 20px;transition:all .3s ease}.btn-secondary:hover:not(:disabled){background:#4b5563}.btn-refresh{background:#10b981;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .3s ease}.btn-refresh:hover:not(:disabled){background:#059669}.btn-delete{background:#ef4444;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:12px;padding:6px 12px;transition:all .3s ease}.btn-delete:hover:not(:disabled){background:#dc2626}.btn-weather{background:#f59e0b;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .3s ease}.btn-weather:hover:not(:disabled){background:#d97706}.btn-mqtt{background:#8b5cf6;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .3s ease}.btn-mqtt:hover:not(:disabled){background:#7c3aed}.btn-large{font-size:16px;margin-bottom:20px;padding:16px 32px}button:disabled{box-shadow:none!important;cursor:not-allowed;opacity:.6;transform:none!important}.add-location-form{align-items:center;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px}.add-location-form input{border:2px solid #e2e8f0;border-radius:8px;flex:1 1;font-size:14px;min-width:300px;padding:12px;transition:border-color .3s ease}.add-location-form input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.region-selection-section{background:#fff7e6;border:2px solid #ffa726;border-radius:12px;box-shadow:0 2px 8px #ffa72633;margin-top:20px;padding:20px}.region-selection-section h4{color:#e65100;font-size:1.3em;font-weight:600;margin:0 0 15px}.region-selection-section>p{color:#bf360c;font-weight:500;margin:0 0 15px}.region-selection-info{background:#fff;border:1px solid #ffe0b2;border-radius:8px;margin-bottom:20px;padding:15px}.region-selection-info p{color:#5d4037;margin:5px 0}.region-options{display:flex;flex-direction:column;gap:12px;margin-bottom:25px}.region-option{align-items:center;background:#fff;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;display:flex;padding:15px;transition:all .3s ease}.region-option:hover{background-color:#fff3e0;border-color:#ffa726}.region-option input[type=radio]{margin-right:12px;transform:scale(1.2)}.region-option input[type=radio]:checked+.region-info{color:#e65100;font-weight:600}.region-option:has(input[type=radio]:checked){background-color:#fff3e0;border-color:#ff6f00;box-shadow:0 2px 8px #ff6f0033}.region-info{display:flex;flex-direction:column;gap:2px}.region-info strong{color:#424242;font-size:1.1em}.region-info small{color:#757575;font-size:.9em}.region-selection-actions{border-top:1px solid #ffe0b2;display:flex;gap:15px;justify-content:flex-end;padding-top:15px}.region-selection-actions .btn-secondary{background-color:#9e9e9e;color:#fff}.region-selection-actions .btn-secondary:hover{background-color:#757575}.region-selection-actions .btn-primary:disabled{background-color:#bdbdbd;cursor:not-allowed}.locations-grid,.mqtt-grid,.status-grid,.weather-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.status-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.location-card,.mqtt-item,.status-card,.weather-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 2px 8px #0000001a;padding:20px;transition:all .3s ease}.location-card:hover,.mqtt-item:hover,.status-card:hover,.weather-card:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.location-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:15px}.location-header h4{color:#1e293b;font-size:1.2em;margin:0}.location-info{margin-bottom:15px}.location-info p{color:#64748b;font-size:14px;margin:8px 0}.location-info code{background:#f1f5f9;border-radius:4px;font-family:Courier New,monospace;font-size:12px;padding:2px 6px}.location-actions{text-align:center}.weather-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.weather-header h4{color:#1e293b;font-size:1.2em;margin:0}.weather-main{align-items:center;display:flex;gap:10px}.weather-icon{height:60px;width:60px}.temperature{font-size:2em;font-weight:700}.weather-info{margin-bottom:20px}.weather-info p{color:#64748b;font-size:14px;margin:6px 0}.weather-alerts{background:#fef3c7;border:1px solid #f59e0b;border-radius:8px;margin-bottom:20px;padding:12px}.weather-alerts h5{color:#92400e;margin:0 0 10px}.alert-item{margin-bottom:8px}.alert-item strong{color:#92400e}.alert-item p{color:#78350f;font-size:13px;margin:4px 0 0}.weather-forecast h5{color:#1e293b;margin:0 0 12px}.forecast-list{display:flex;flex-direction:column;gap:8px}.forecast-item{grid-gap:12px;align-items:center;border-bottom:1px solid #f1f5f9;display:grid;font-size:14px;gap:12px;grid-template-columns:60px 1fr 80px 40px;padding:8px 0}.forecast-item:last-child{border-bottom:none}.forecast-date{color:#374151;font-weight:500}.forecast-weather{color:#64748b}.forecast-temp{color:#1e293b;font-weight:500;text-align:right}.forecast-pop{color:#3b82f6;text-align:right}.mqtt-actions{margin-bottom:30px;text-align:center}.mqtt-info h5{color:#1e293b;margin:0 0 10px}.mqtt-info p{color:#64748b;font-size:14px;margin:6px 0}.status-indicator{align-items:center;display:inline-flex;font-weight:500;gap:4px}.status-indicator.connected{color:#16a34a}.status-indicator.disconnected{color:#dc2626}.status-info p{color:#64748b;font-size:14px;margin:8px 0}.empty-state,.loading-state{color:#64748b;padding:40px 20px;text-align:center}.loading-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.loading-spinner{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000004d;padding:30px;text-align:center}.spinner{animation:spin 1s linear infinite;border:4px solid #f3f4f6;border-radius:50%;border-top-color:#3b82f6;height:40px;margin:0 auto 15px;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.loading-spinner p{color:#64748b;font-weight:500;margin:0}@media (max-width:768px){.weather-page{padding:15px}.weather-header h1{font-size:2em}.weather-tabs{flex-direction:column;gap:4px}.add-location-form{align-items:stretch;flex-direction:column}.add-location-form input{min-width:100%}.locations-grid,.mqtt-grid,.status-grid,.weather-grid{grid-template-columns:1fr}.section-header{align-items:stretch;flex-direction:column;gap:10px}.weather-header{align-items:flex-start;flex-direction:column;gap:15px}.weather-main{align-self:center}.forecast-item{font-size:13px;gap:8px;grid-template-columns:50px 1fr 70px 35px}}@media (max-width:480px){.weather-page{padding:10px}.location-card,.mqtt-item,.status-card,.tab-content,.weather-card{padding:16px}.weather-header h1{font-size:1.8em}.temperature{font-size:1.5em}.weather-icon{height:50px;width:50px}}.duplicate-grid-info{background:#fef3c7;border-left:3px solid #f59e0b;border-radius:6px;color:#f59e0b;font-size:13px;font-style:italic;margin-top:8px;padding:8px 12px}.location-header h4{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:6px;color:#3b82f6!important;font-size:1.1em!important;font-weight:700!important;padding:6px 12px}.location-header h4,.location-info code{font-family:Courier New,monospace!important}.location-info code{background:#f1f5f9!important;border:1px solid #e2e8f0;border-radius:4px!important;color:#1e40af!important;font-size:12px!important;padding:4px 8px!important}.location-info p:first-of-type{background:#ecfdf5;border-left:3px solid #10b981;border-radius:6px;margin-bottom:12px;padding:8px 12px}.location-info p:nth-of-type(2){background:#fef7ff;border-left:3px solid #8b5cf6;border-radius:6px;margin-bottom:12px;padding:8px 12px}.location-info p:contains("격자 좌표"),.location-info p:nth-of-type(3){background:#fff7ed;border-left:3px solid #f59e0b;border-radius:6px;font-family:Courier New,monospace;font-weight:500;padding:8px 12px}.weather-header h4{background:#f0f9ff;border:1px solid #bfdbfe;border-radius:4px;color:#3b82f6!important;font-family:Courier New,monospace!important;font-size:1rem!important;padding:4px 8px}.mqtt-section>p:first-of-type{background:#f8fafc!important;border-left:4px solid #3b82f6!important;border-radius:8px!important;color:#475569!important;font-size:14px;line-height:1.5;margin-bottom:1.5rem!important;padding:16px!important}.mqtt-item{background:#fafafa!important;border:1px solid #e2e8f0!important;transition:all .2s ease!important}.mqtt-item:hover{background:#f0f9ff!important;border-color:#3b82f6!important;box-shadow:0 4px 12px #3b82f626!important}.mqtt-info h5{color:#1e40af!important;font-family:Courier New,monospace!important;font-size:1rem;font-weight:600;margin-bottom:.5rem!important}.status-indicator{align-items:center!important;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:12px!important;display:inline-flex!important;font-size:.85rem!important;font-weight:500!important;gap:.25rem!important;padding:.25rem .5rem!important}.status-indicator.connected{background:#f0fdf4!important;border:1px solid #bbf7d0;color:#16a34a!important}.status-indicator.disconnected{background:#fef2f2!important;border:1px solid #fecaca;color:#dc2626!important}.status-card h4{border-bottom:2px solid #f1f5f9;color:#1e293b!important;margin-bottom:1rem!important;padding-bottom:.5rem}.mqtt-section .section-header+p{background:linear-gradient(135deg,#f0f9ff,#e0f2fe)!important;border:1px solid #bae6fd!important;border-left:4px solid #0ea5e9!important}@media (max-width:768px){.location-header h4{font-size:.95rem!important;padding:4px 8px!important}.location-info{font-size:.85rem!important}.location-info p{margin-bottom:8px!important;padding:6px 10px!important}.mqtt-item{padding:12px!important}.duplicate-grid-info{font-size:12px!important;padding:6px 10px!important}}.loading-overlay{align-items:center!important;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#ffffffd9!important;bottom:0!important;display:flex!important;justify-content:center!important;left:0!important;position:fixed!important;right:0!important;top:0!important;z-index:1000!important}.loading-spinner{background:#fff!important;border:1px solid #e2e8f0;border-radius:12px!important;box-shadow:0 10px 25px #00000026!important;padding:2rem!important;text-align:center!important}.spinner{animation:spin 1s linear infinite!important;border:4px solid #f3f4f6!important;border-radius:50%!important;border-top-color:#3b82f6!important;height:40px!important;margin:0 auto 1rem!important;width:40px!important}.loading-spinner p{color:#64748b!important;font-weight:500!important;margin:0!important}
/*# sourceMappingURL=main.cc92b0f8.css.map*/