body{font-family:Arial,sans-serif;margin:0;padding:0;background-color:#fff}h1{text-align:center;color:#333}.app-topbar{width:80%;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.top-refresh-button{margin:0;padding:8px 14px}.mailbox-button{position:relative;border:1px solid #cbd5df;background:#fff;border-radius:8px;padding:8px 14px;cursor:pointer;color:#2a3442}.mailbox-unread-dot{position:absolute;top:4px;right:4px}.mailbox-unread-dot,.sidebar-mail-unread-dot{width:8px;height:8px;border-radius:50%;background:#d92d20}.sidebar-mail-unread-dot{display:inline-block;margin-left:8px;vertical-align:middle}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{width:100%;max-width:360px;background:#fff;border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.12);padding:24px;display:flex;flex-direction:column;grid-gap:12px;gap:12px}.login-card h2{margin:0 0 8px;color:#273544}.login-input{width:100%;box-sizing:border-box;height:42px;border:1px solid #cbd5df;border-radius:8px;padding:0 12px;font-size:14px}.login-input:focus{outline:2px solid #8dbbff;border-color:#7eaef2}.login-error{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:6px;padding:10px;font-size:13px}.login-success{background:#d4edda;color:#155724;border:1px solid #c3e6cb;border-radius:6px;padding:10px;font-size:13px}.login-button{margin:4px 0 0}.auth-link-row{display:flex;align-items:center;justify-content:flex-start;grid-gap:8px;gap:8px;margin-top:2px}.auth-help-text{font-size:12px;color:#8a94a2}.auth-link-button{background:none;border:none;color:#2f80ed;font-size:13px;cursor:pointer;padding:0;margin-left:auto}.auth-link-button:hover{text-decoration:underline}.search-bar-wrap{width:80%;margin:12px auto 16px;display:grid;grid-template-columns:1fr 1fr 1fr 2fr;align-items:start;grid-gap:12px;gap:12px}.list-logo-wrap{width:80%;margin:6px auto 10px;display:flex;justify-content:center}.list-company-logo{max-width:min(560px,100%);height:auto;object-fit:contain}.korea-map-panel{width:88%;margin:0 auto 12px;background:#fff;border:1px solid #d9e1e8;border-radius:10px;padding:12px}.korea-map-panel h3{margin:0 0 6px}.korea-map-help{margin:0 0 10px;font-size:13px;color:#667085}.korea-map-level-wrap{display:block;animation:korea-map-zoom-in .28s ease}.korea-map-level{border:1px solid #e3e8ef;border-radius:8px;padding:8px;background:#fbfdff}.korea-map-level.single{max-width:560px;margin:0 auto}.korea-map-toolbar{display:flex;grid-gap:8px;gap:8px;margin-bottom:10px;justify-content:center}.korea-map-back-button{border:1px solid #d0d7e2;border-radius:6px;background:#fff;color:#344054;font-size:12px;padding:4px 8px;cursor:pointer}@keyframes korea-map-zoom-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.korea-map-level h4{margin:0 0 8px;font-size:14px}.korea-svg-map{width:100%;height:auto;display:block}.korea-svg-frame{fill:#f8fafc;stroke:#d9e1e8}.korea-svg-terrain{fill:#eef2f7;opacity:.85;stroke:#d8e0ea;stroke-width:1.2}.kakao-map-wrap{margin-top:12px}.kakao-map-canvas{width:100%;height:460px;border:1px solid #d9e1e8;border-radius:10px;overflow:hidden;animation:map-canvas-zoom-in .32s ease}@keyframes map-canvas-zoom-in{0%{opacity:.2;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.kakao-region-bubble{min-width:78px;min-height:70px;border-radius:999px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:8px 10px;box-sizing:border-box;font-size:12px;font-weight:700;color:#1f2a37;background:hsla(0,0%,100%,.92);border:2px solid #2f80ed;box-shadow:0 2px 8px rgba(0,0,0,.18);cursor:pointer;white-space:normal;-webkit-user-select:none;user-select:none;animation:korea-map-zoom-in .25s ease}.kakao-region-bubble .bubble-name{line-height:1.1}.kakao-region-bubble .bubble-count{margin-top:2px;line-height:1;font-size:13px}.kakao-region-bubble.zero-count{opacity:.52}.kakao-region-bubble.gugun{border-color:#1f9d55}.kakao-region-bubble.dong{border-color:#d97706;cursor:default}.kakao-region-label{display:flex;flex-direction:column;align-items:center;justify-content:center;grid-gap:2px;gap:2px;min-width:0;padding:0;border-radius:0;font-size:11px;font-weight:700;color:#1f2a37;background:transparent;border:none;text-align:center}.kakao-region-label.zero-count{opacity:.52}.kakao-map-error{padding:10px 12px;border:1px solid #f5c2c7;border-radius:8px;background:#fef2f2;color:#8a1c1c;font-size:13px}.korea-map-chip-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:6px;gap:6px}.korea-map-chip{border:1px solid #d0d7e2;border-radius:6px;background:#fff;padding:6px 8px;display:flex;align-items:center;justify-content:space-between;grid-gap:6px;gap:6px;cursor:pointer;font-size:12px}.korea-map-chip.active{border-color:#2f80ed;background:#eaf3ff}.korea-map-chip.static{cursor:default}.search-filters-left{display:contents}.spec-filter-group{display:flex;flex-direction:column;grid-gap:8px;gap:8px}.spec-filter-input,.spec-filter-select{width:100%;box-sizing:border-box;height:40px;padding:0 12px;border:1px solid #cbd5df;border-radius:8px;background:#fff;font-size:14px;color:#243241}.search-input:focus,.spec-filter-input:focus,.spec-filter-select:focus{outline:2px solid #8dbbff;border-color:#7eaef2}.search-main-right{width:100%}.search-input{width:100%;box-sizing:border-box;height:44px;padding:0 14px;border:1px solid #cbd5df;border-radius:8px;background:#fff;font-size:15px;color:#243241;box-shadow:0 1px 3px rgba(0,0,0,.04)}.container{width:80%;margin:auto;overflow:hidden;position:relative}.workspace-layout{width:80%;margin:0 auto;display:grid;grid-template-columns:220px 1fr;grid-gap:16px;gap:16px;align-items:start}.sidebar{background:#fff;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,.08);padding:14px;position:sticky;top:16px}.sidebar h3{margin:0 0 12px;color:#2c3b49;font-size:16px}.sidebar-greeting{font-size:14px;font-weight:600;color:#2f3d4a;margin:4px 0 18px}.sidebar-menu-button{width:100%;border:1px solid #d2dbe5;background:#fff;border-radius:8px;padding:10px 12px;text-align:left;margin-bottom:8px;cursor:pointer;color:#2a3442}.sidebar-menu-button.active{background:#2f80ed;color:#fff;border-color:#2f80ed}.sidebar-logout-button{margin-top:12px;background:#fef2f2;border-color:#f5c2c7;color:#8a1c1c}.page-content{min-width:0}.placeholder-page{background:#fff;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.1);padding:20px}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:1200}.modal-content{width:min(92vw,640px);max-height:82vh;overflow:auto;background:#fff;border-radius:10px;padding:16px}.mailbox-modal{width:min(92vw,760px)}.mailbox-page{max-width:840px}.mailbox-page-header{display:flex;align-items:center;justify-content:space-between;grid-gap:12px;gap:12px;margin-bottom:10px}.mailbox-page-header h3{margin:0}.mailbox-header-actions{display:flex;flex-direction:column;align-items:flex-end;grid-gap:2px;gap:2px}.mailbox-select-all-text{border:none;background:none;padding:0;font-size:12px;color:#2f80ed;cursor:pointer}.mailbox-select-all-text:disabled{color:#98a2b3;cursor:default}.mailbox-select-all-text:hover:not(:disabled){text-decoration:underline}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.modal-close{border:none;background:transparent;font-size:24px;line-height:1;cursor:pointer}.modal-actions{display:flex;grid-gap:10px;gap:10px;margin-top:12px}.reject-reason-input{min-height:120px;resize:vertical}.mailbox-list{display:grid;grid-gap:8px;gap:8px}.mailbox-item{border:1px solid #e3e8ef;border-radius:8px;padding:10px}.mailbox-item-head{justify-content:space-between}.mailbox-item-actions,.mailbox-item-head{display:flex;align-items:center;grid-gap:8px;gap:8px}.mailbox-item.unread{border-color:#f29d97;background:#fff7f7}.mailbox-item-title{font-weight:700}.mailbox-item-content{margin-top:6px;white-space:pre-wrap}.mailbox-item-time{margin-top:6px;color:#667085;font-size:12px}.permission-page,.permission-table-wrap{overflow-x:auto}.permission-table{width:100%;border-collapse:collapse;min-width:640px}.permission-table td,.permission-table th{border-bottom:1px solid #e3e8ef;padding:10px;text-align:left;font-size:14px}.permission-table th{background:#f6f9fc;color:#2f3d4a}.log-filter-row th{background:#eef2f7;padding:6px 8px}.log-filter-input{width:100%;box-sizing:border-box;padding:5px 8px;border:1px solid #c9d4e0;border-radius:4px;font-size:13px;background:#fff;color:#2f3d4a}.log-filter-input:focus{outline:none;border-color:#4a90d9}.top-buttons{position:static;display:flex;justify-content:flex-end;grid-gap:10px;gap:10px;z-index:10;margin-bottom:10px}.top-buttons .button{margin:0}.button{display:inline-block;padding:10px 20px;margin:20px 0;background-color:#5cb85c;color:#fff;border:none;border-radius:5px;cursor:pointer}.button:hover{background-color:#4cae4c}.button-controller{background-color:#d9534f}.button-controller:hover{background-color:#c9302c}.button-cancel{background-color:#d9534f;margin-left:10px}.button-cancel:hover{background-color:#c9302c}.error-box{background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:5px;padding:12px 15px;margin-bottom:15px}.spec-list-anchor{scroll-margin-top:72px}.spec-list{list-style:none;padding:0}.spec-item{background:#fff;margin:10px 0;padding:15px;border-radius:5px;box-shadow:0 2px 5px rgba(0,0,0,.1);cursor:pointer}.spec-details{display:none;padding:10px}.popup{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center}.popup-content{background:#fff;padding:20px;border-radius:10px;width:90%;max-width:800px;max-height:80%;overflow-y:auto;position:relative}.toast-popup{position:fixed;top:50%;left:50%;background-color:rgba(220,53,69,.95);color:#fff;padding:12px 16px;border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.15);z-index:1000;min-width:240px;text-align:center;opacity:0;transform:translate(-50%,-50%) scale(.96);transition:opacity .25s ease,transform .25s ease}.toast-popup.show{opacity:1;transform:translate(-50%,-50%) scale(1)}.toast-popup.toast-success{background-color:rgba(40,167,69,.95)}.toast-popup.toast-error{background-color:rgba(220,53,69,.95)}.model-name{background:#e9ecef;padding:10px;margin:10px 0;border-radius:5px;cursor:pointer;font-size:18px;font-weight:700;display:flex;flex-wrap:nowrap;align-items:center;grid-gap:10px;gap:10px;min-width:0}.model-name:hover{background:#d6d8db}.model-name .model-type-badge,.model-name .review-dot,.model-name .review-event-chip{flex-shrink:0}.model-list-product,.model-list-site{flex:0 1 40%}.model-list-household,.model-list-product,.model-list-site{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-list-household{flex:0 1 20%}.model-actions{flex-shrink:0;margin-left:auto;display:flex;grid-gap:8px;gap:8px;align-items:center;justify-content:flex-end;min-width:210px}.model-collapsed-extra{margin-top:-4px;margin-bottom:10px}.review-pending-label{color:#b42318;font-size:13px;font-weight:700;white-space:nowrap}.model-edit-button{margin:0;padding:6px 10px;font-size:13px}.edit-top-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px;margin-bottom:10px}.list-container{display:grid;grid-template-columns:1fr 1fr;grid-gap:20px;gap:20px}.button-group{display:flex;grid-gap:10px;gap:10px;margin-bottom:20px}.button-group .button{margin:0}.model-header{align-items:center;grid-gap:10px;gap:10px}.model-type-badge{display:inline-block;padding:3px 6px;border-radius:5px;font-weight:700;font-size:12px;grid-column:1;white-space:nowrap}.model-type-badge.조절기{background-color:#28a745;color:#fff}.model-type-badge.제어기{background-color:#dc3545;color:#fff}.model-list-section{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.1);margin:0 0 20px}.model-list-section h3{margin-top:0;color:#333;padding-bottom:0}.model-list-head{display:flex;align-items:center;justify-content:space-between;grid-gap:10px;gap:10px;border-bottom:2px solid #5cb85c;padding-bottom:10px}.model-list-head h3{margin-bottom:0;flex:1 1}.type-filter-buttons{display:flex;grid-gap:8px;gap:8px}.type-filter-button{margin:0;padding:6px 12px;font-size:13px}.type-filter-button.adjuster{background:#1f9d55}.type-filter-button.adjuster:hover{background:#188748}.type-filter-button.controller{background:#d92d20}.type-filter-button.controller:hover{background:#b42318}.type-filter-button.off{opacity:.45}.empty-list-message{padding:20px 0 8px;color:#667085;text-align:center}.review-card-list{display:grid;grid-gap:12px;gap:12px}.review-card{border:1px solid #e3e8ef;border-radius:8px;padding:14px;background:#fff}.review-card-head{display:flex;justify-content:space-between;grid-gap:10px;gap:10px;align-items:center}.review-card-title-wrap{display:flex;align-items:center;grid-gap:8px;gap:8px}.review-dot{width:10px;height:10px;border-radius:50%;background:#d92d20;display:inline-block}.review-event-chip{background:#fde2e1;color:#b42318;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:700}.review-card-sub{margin-top:6px;color:#475467;font-size:13px}.review-diff-wrap{margin-top:10px;font-size:13px}.review-diff-wrap h4{margin:0 0 6px}.review-diff-list{margin:0;padding-left:18px}.review-diff-label{font-weight:700}.review-request-type-text{margin:8px 0 14px;font-size:14px;font-weight:700;color:#2f3d4a}@media (max-width:900px){.workspace-layout{width:92%;grid-template-columns:1fr}.sidebar{position:static}.search-bar-wrap{grid-template-columns:1fr}.search-main-right{width:100%}.korea-map-panel{width:96%}.korea-map-level.single{max-width:100%}}.pagination-wrap{margin-top:16px;display:flex;justify-content:center;align-items:center;grid-gap:8px;gap:8px;flex-wrap:wrap}.pagination-button{border:1px solid #c8d0da;background:#fff;color:#2a3442;border-radius:6px;padding:6px 10px;min-width:36px;cursor:pointer}.pagination-button:hover:not(:disabled){background:#eef5ff;border-color:#8dbbff}.pagination-button.active{background:#2f80ed;color:#fff;border-color:#2f80ed}.pagination-button:disabled{opacity:.5;cursor:not-allowed}.form-page{background:#fff;padding:20px;margin:70px 0 20px;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.1)}.form-page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.form-header-actions{display:flex;align-items:center;grid-gap:8px;gap:8px}.form-header-actions .button{margin:0}.button-add-spec{background-color:#2f80ed}.button-add-spec:hover{background-color:#1f6fd8}.button-delete-spec{background-color:#6b7280}.button-delete-spec:hover{background-color:#4b5563}.form-page-title-wrap{display:flex;align-items:center;grid-gap:16px;gap:16px}.form-switch-buttons{display:flex;grid-gap:10px;gap:10px;flex-wrap:nowrap;align-items:center}.form-switch-buttons .button{margin:0}.region-select{min-width:112px;max-width:132px;height:36px}.region-detail-inline{flex:1 1 200px;min-width:0;max-width:min(420px,46vw)}.region-detail-inline .field-input{width:100%;height:36px;box-sizing:border-box}.button-active{box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.95),0 0 0 2px rgba(0,0,0,.08)}.form-page-header h2{margin:0}.form-page-content{position:relative}.form-fields-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px 14px;gap:12px 14px}.form-field{display:flex;flex-direction:column;grid-gap:6px;gap:6px}.spec-edit-top-row{margin-bottom:12px}.spec-edit-fields-grid .field-label{font-size:16px}.form-field.full-width{grid-column:1/-1}.top-required-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px 14px;gap:12px 14px;grid-column:1/-1}.top-required-row-triple{grid-template-columns:2fr 2fr 1fr}.field-label{font-size:20px;font-weight:700;color:#222}.required-mark{color:#d93025;margin-right:2px}.field-input{width:100%;box-sizing:border-box;height:38px;border:1px solid #ccd3db;border-radius:6px;padding:0 10px;font-size:14px;color:#1f2a37;background:#fff}.field-input:focus{outline:2px solid #8dbbff;outline-offset:0;border-color:#7eaef2}.spec-dropdown-root{position:relative;width:100%}button.spec-dropdown-trigger.field-input{display:flex;align-items:center;justify-content:space-between;grid-gap:8px;gap:8px;cursor:pointer;text-align:left;font-family:inherit}.spec-dropdown-trigger-chevron{flex-shrink:0;opacity:.55;font-size:12px}.spec-dropdown-trigger-label{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spec-dropdown-panel{box-sizing:border-box;background:#fff;border:1px solid #ccd3db;border-radius:6px;box-shadow:0 8px 24px rgba(0,0,0,.14);padding:8px;max-height:280px;display:flex;flex-direction:column;grid-gap:6px;gap:6px}.spec-dropdown-search{flex-shrink:0}.spec-dropdown-list{list-style:none;margin:0;padding:0;overflow-y:auto;max-height:210px}.spec-dropdown-option{width:100%;text-align:left;border:none;background:transparent;padding:8px 10px;border-radius:4px;cursor:pointer;font:inherit;color:#1f2a37}.spec-dropdown-option:hover{background:#e9ecef}.spec-dropdown-option.is-selected{background:#cfe2ff;font-weight:600}.spec-dropdown-empty,.spec-dropdown-option-legacy{color:#6c757d;font-size:13px}.spec-dropdown-empty{padding:6px 8px}.dark-mode .spec-dropdown-panel{background:#1e232e;border-color:#3c4251;box-shadow:0 8px 24px rgba(0,0,0,.45)}.dark-mode button.spec-dropdown-trigger.field-input{background:#121212;color:#d4dbe7;border-color:#3c4251}.dark-mode .spec-dropdown-option{color:#d4dbe7}.dark-mode .spec-dropdown-option:hover{background:#2a2f3b}.dark-mode .spec-dropdown-option.is-selected{background:#2f4a7c}.dark-mode .spec-dropdown-empty{color:#9aa5b5}.file-field-wrap{display:flex;flex-direction:column;grid-gap:8px;gap:8px}.file-selected-row{display:flex;align-items:center;grid-gap:8px;gap:8px}.file-selected-item{border:1px dashed #d0d7e2;border-radius:6px;padding:8px}.file-selected-name{font-size:13px;color:#2f3d4a;word-break:break-all}.file-clear-button{margin:0;padding:6px 10px;font-size:12px}.firmware-description-input{min-height:70px;padding:8px 10px;resize:vertical}.form-actions{margin-top:20px}@media (max-width:900px){.form-fields-grid,.top-required-row{grid-template-columns:1fr}.form-page-header,.form-page-title-wrap{flex-direction:column;align-items:flex-start}.form-page-header{grid-gap:10px;gap:10px}.form-switch-buttons{flex-wrap:wrap}}.spec-grid{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));grid-gap:0;gap:0;margin-top:18px;border:1px solid #cfd7df;border-right:none;border-bottom:none;background:#fff}.spec-view-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:8px 10px;gap:8px 10px;margin-top:12px}.spec-view-item{display:flex;flex-direction:column;grid-gap:6px;gap:6px}.spec-view-item.full-width{grid-column:1/-1}.spec-view-item>label{font-size:16px;font-weight:700;color:#222}.spec-view-item .field-input,.spec-view-item .spec-file-view,.spec-view-value{border:1px solid #ccd3db;border-radius:6px;background:#fff}.spec-view-value{min-height:32px;padding:6px 8px;font-size:13px;color:#1f2a37;line-height:1.45;white-space:pre-wrap;word-break:break-word}.spec-view-item .field-input{height:38px;padding:0 10px}.spec-view-file-box{border:1px solid #ccd3db;border-radius:8px;background:#fff;padding:8px}.spec-view-file-box .spec-image-grid{grid-gap:8px;gap:8px}.spec-view-file-box .spec-upload-preview{height:92px}.spec-view-file-box .spec-firmware-row-wrap{padding:6px;border:1px solid #d9e1e8;border-radius:6px;background:#f8fafc}.spec-input{display:flex;flex-direction:column;grid-gap:0;gap:0;border-right:1px solid #cfd7df;border-bottom:1px solid #cfd7df;min-height:96px}.spec-input.full-width{grid-column:1/-1}.spec-input label{font-size:12px;font-weight:600;margin-bottom:0;padding:8px 10px;background:#f1f5f9;border-bottom:1px solid #d9e1e8}.spec-changed-dot{width:8px;height:8px;border-radius:50%;background:#d92d20;display:inline-block;margin-right:6px}.spec-input input,.spec-input select{padding:10px;border:none;border-radius:0;width:100%;box-sizing:border-box;background:transparent;flex:1 1}.spec-input select{font-size:14px;color:#1f2a37;cursor:pointer}.spec-input select:disabled{cursor:default;opacity:.92}.spec-input input:focus,.spec-input select:focus{outline:2px solid #7ab8ff;outline-offset:-2px;background:#f8fbff}.spec-file-view{padding:10px;display:flex;flex-direction:column;grid-gap:8px;gap:8px}.spec-upload-preview{width:100%;height:120px;border:1px solid #d9e1e8;border-radius:6px;object-fit:contain;background:#fff}.spec-image-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:8px;gap:8px}.spec-image-item{position:relative;min-width:0}.spec-image-delete-button{position:absolute;top:4px;right:4px;width:22px;height:22px;border:none;border-radius:999px;background:rgba(217,45,32,.92);color:#fff;cursor:pointer;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center}.spec-image-delete-button:hover{background:rgba(180,35,24,.95)}.lightbox-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:1300}.lightbox-backdrop,.lightbox-content{display:flex;align-items:center;justify-content:center}.lightbox-content{position:relative;width:min(92vw,1100px);max-height:90vh}.lightbox-image{max-width:100%;max-height:88vh;object-fit:contain;border-radius:8px;background:#fff}.lightbox-close{position:absolute;top:8px;right:8px;width:30px;height:30px;border:none;border-radius:999px;background:rgba(0,0,0,.6);color:#fff;font-size:20px;cursor:pointer}.spec-file-link{color:#2f80ed;text-decoration:none;word-break:break-all}.spec-file-link:hover{text-decoration:underline}.spec-file-empty{color:#667085;font-size:13px}.spec-file-actions,.spec-firmware-row{display:flex;align-items:center;grid-gap:8px;gap:8px;flex-wrap:wrap}.spec-firmware-row-wrap{position:relative;display:inline-block}.spec-firmware-name{font-size:12px;color:#4b5563;word-break:break-all}.spec-download-button{margin:0;padding:6px 10px;font-size:12px;text-decoration:none}.review-inline-change{margin-top:6px;padding:6px 8px;border-radius:4px;background:#fff4f4;color:#7a271a;font-size:12px;line-height:1.4}.firmware-edit-row{border:1px dashed #d0d7e2;border-radius:6px;padding:8px}.spec-firmware-tooltip{position:absolute;top:calc(100% + 6px);left:0;min-width:220px;max-width:320px;background:#fff;border:1px solid #d0d7e2;border-radius:6px;box-shadow:0 8px 20px rgba(0,0,0,.12);padding:8px 10px;font-size:12px;color:#1f2a37;line-height:1.45;display:none;z-index:20;white-space:pre-wrap}.spec-firmware-row-wrap:hover .spec-firmware-tooltip{display:block}@media (max-width:900px){.spec-grid{grid-template-columns:repeat(3,minmax(120px,1fr))}.spec-view-grid{grid-template-columns:1fr}}@media (max-width:560px){.spec-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}.spec-image-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.spec-item.active .spec-details{display:block}.popup-content input{width:100%;padding:10px;margin:10px 0;border:1px solid #ddd;border-radius:5px}.popup-content .close{background:#d9534f;color:#fff;border:none;border-radius:5px;cursor:pointer}.popup-content .close:hover{background:#c9302c}.settings-page{max-width:480px}.settings-row{display:flex;align-items:center;grid-gap:14px;gap:14px;padding:14px 0;border-bottom:1px solid #e3e8ef;font-size:15px;color:#2f3d4a}.settings-label{flex:1 1;font-weight:500;cursor:pointer}.settings-checkbox{width:18px;height:18px;cursor:pointer;accent-color:#2f80ed}.dark-mode{background-color:#000;color:#d4dbe7}.dark-mode,.dark-mode .App,.dark-mode body{background-color:#000;color:#d4dbe7;min-height:100vh}body.dark-mode{background-color:#000}.dark-mode h1,.dark-mode h3{color:#e0e6ef}.dark-mode .sidebar{background:#111;border-right-color:#2e333d}.dark-mode .mailbox-button{background:#2a2f3b;color:#d4dbe7;border-color:#3c4251}.dark-mode .sidebar h3{color:#a0aabb}.dark-mode .sidebar-greeting{color:#d4dbe7}.dark-mode .sidebar-menu-button{color:#c5cdd9;background:transparent}.dark-mode .sidebar-menu-button.active,.dark-mode .sidebar-menu-button:hover{background:#2f3644;color:#7eb8ff}.dark-mode .sidebar-logout-button{color:#e07070}.dark-mode .page-content,.dark-mode .workspace-layout{background:#000;min-height:100vh}.dark-mode .placeholder-page{background:#111;color:#d4dbe7}.dark-mode .search-input,.dark-mode .spec-filter-input,.dark-mode .spec-filter-select{background:#2a2f3b;color:#d4dbe7;border-color:#3c4251}.dark-mode .korea-map-panel{background:#111;border-color:#3c4251}.dark-mode .korea-map-help{color:#b8c2d6}.dark-mode .korea-map-level{background:#1a1f29;border-color:#3c4251}.dark-mode .korea-map-back-button{background:#22262e;border-color:#3c4251;color:#d4dbe7}.dark-mode .kakao-map-canvas{border-color:#3c4251}.dark-mode .kakao-region-bubble{background:rgba(34,38,46,.92);color:#e6edf8;border-color:#7eb8ff}.dark-mode .kakao-region-bubble.zero-count{opacity:.46}.dark-mode .kakao-region-bubble.gugun{border-color:#6ee7b7}.dark-mode .kakao-region-bubble.dong{border-color:#fbbf24}.dark-mode .kakao-region-label{color:#e6edf8;background:transparent;border:none}.dark-mode .kakao-region-label.zero-count{opacity:.46}.dark-mode .kakao-map-error{border-color:#7a3030;background:#3a2020;color:#f08080}.dark-mode .korea-svg-frame{fill:#111;stroke:#3c4251}.dark-mode .korea-svg-terrain{fill:#1b2230;stroke:#344055}.dark-mode .korea-svg-region rect{fill:#22262e;stroke:#3c4251}.dark-mode .korea-svg-region.active rect{fill:#243042;stroke:#7eb8ff}.dark-mode .korea-svg-label{fill:#c5cdd9}.dark-mode .korea-svg-count{fill:#e6edf8}.dark-mode .korea-map-chip{background:#22262e;border-color:#3c4251;color:#d4dbe7}.dark-mode .korea-map-chip.active{border-color:#7eb8ff;background:#243042}.dark-mode .permission-table th{background:#161616;color:#a0aabb}.dark-mode .log-filter-row th{background:#141414}.dark-mode .log-filter-input{background:#2a2f3b;color:#d4dbe7;border-color:#3c4251}.dark-mode .permission-table td,.dark-mode .permission-table th{border-bottom-color:#2e333d}.dark-mode .permission-table tr:hover td{background:#272c38}.dark-mode .model-list-section{background:#111;box-shadow:0 2px 8px rgba(0,0,0,.4)}.dark-mode .model-list-section h3{color:#d4dbe7}.dark-mode .model-list-head{border-bottom-color:#3a8a4a}.dark-mode .type-filter-button.off{opacity:.5}.dark-mode .model-name{background:#2a2f3b;color:#d4dbe7}.dark-mode .model-name:hover{background:#323849}.dark-mode .review-pending-label{color:#ff9f9a}.dark-mode .review-card{background:#121212;border-color:#3c4251}.dark-mode .review-event-chip{background:#5b2320;color:#ffb4ac}.dark-mode .review-card-sub{color:#c5cdd9}.dark-mode .review-request-type-text{color:#d4dbe7}.dark-mode .empty-list-message{color:#7a8a9e}.dark-mode .spec-grid{background:#22262e;border-color:#3c4251}.dark-mode .spec-view-item>label{color:#e6edf8}.dark-mode .spec-view-item .field-input,.dark-mode .spec-view-item .spec-file-view,.dark-mode .spec-view-value{background:#2a2f3b;color:#d4dbe7;border-color:#3c4251}.dark-mode .spec-view-file-box{background:#2a2f3b;border-color:#3c4251}.dark-mode .spec-view-file-box .spec-firmware-row-wrap{background:#1f2430;border-color:#3c4251}.dark-mode .spec-input{border-right-color:#3c4251;border-bottom-color:#3c4251}.dark-mode .spec-input label{background:#2a2f3b;color:#a0aabb;border-bottom-color:#3c4251}.dark-mode .spec-input input{background:#22262e;color:#d4dbe7}.dark-mode .spec-input input:focus{background:#272c38;outline-color:#4a7abf}.dark-mode .spec-input select{background:#22262e;color:#d4dbe7}.dark-mode .spec-input select:focus{background:#272c38;outline-color:#4a7abf}.dropdown-manage-help{margin:0 0 16px;font-size:14px;color:#475467;line-height:1.5}.dropdown-manage-add-form{margin-bottom:20px;padding:14px;border:1px solid #e3e8ef;border-radius:8px;background:#f8fafc}.dropdown-manage-row{display:flex;flex-wrap:wrap;align-items:center;grid-gap:10px;gap:10px;margin-bottom:10px}.dropdown-manage-row:last-child{margin-bottom:0}.dropdown-manage-label{min-width:72px;font-weight:600;font-size:14px;color:#2f3d4a}.dropdown-manage-title-select{flex:1 1;min-width:200px;max-width:420px}.dropdown-manage-list-wrap h4{margin:0 0 10px;font-size:15px;color:#2f3d4a}.dropdown-manage-empty{color:#667085;font-size:14px}.dropdown-manage-option-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;grid-gap:8px;gap:8px}.dropdown-manage-option-item{display:flex;align-items:center;justify-content:space-between;grid-gap:12px;gap:12px;padding:10px 12px;border:1px solid #e3e8ef;border-radius:8px;background:#fff}.dropdown-manage-option-text{font-size:14px;word-break:break-all}.dark-mode .dropdown-manage-help{color:#b8c2d6}.dark-mode .dropdown-manage-add-form{background:#1a1f29;border-color:#3c4251}.dark-mode .dropdown-manage-label,.dark-mode .dropdown-manage-list-wrap h4{color:#d4dbe7}.dark-mode .dropdown-manage-empty{color:#7a8a9e}.dark-mode .dropdown-manage-option-item{background:#121212;border-color:#3c4251}.dark-mode .edit-top-row input{background:#2a2f3b;color:#d4dbe7;border-color:#3c4251}.dark-mode .spec-item{background:#22262e;border-color:#2e333d}.dark-mode .spec-header{background:#272c38;color:#d4dbe7}.dark-mode .spec-header:hover{background:#2f3644}.dark-mode .spec-details-table th{background:#2a2f3b;color:#a0aabb}.dark-mode .spec-details-table td{color:#c8d1e0;border-bottom-color:#2e333d}.dark-mode .button{background:#2f80ed;color:#fff}.dark-mode .pagination-button{background:#22262e;color:#c5cdd9;border-color:#3c4251}.dark-mode .pagination-button:hover:not(:disabled){background:#2a2f3b;border-color:#7eb8ff}.dark-mode .pagination-button.active{background:#2f80ed;color:#fff;border-color:#2f80ed}.dark-mode .error-box{background:#3a2020;color:#f08080;border-color:#7a3030}.dark-mode .settings-row{border-bottom-color:#2e333d;color:#d4dbe7}.dark-mode .field-input,.dark-mode .field-select{background:#2a2f3b;color:#d4dbe7;border-color:#3c4251}.dark-mode .field-label,.dark-mode .form-page-header h2{color:#e6edf8}.dark-mode .file-selected-name,.dark-mode .spec-file-empty{color:#d4dbe7}.dark-mode .spec-upload-preview{border-color:#3c4251;background:#22262e}.dark-mode .spec-image-delete-button{background:rgba(208,44,35,.95)}.dark-mode .spec-file-link{color:#7eb8ff}.dark-mode .spec-firmware-name{color:#b8c2d6}.dark-mode .spec-firmware-tooltip{background:#2a2f3b;border-color:#3c4251;color:#d4dbe7}.dark-mode .file-selected-item,.dark-mode .firmware-edit-row{border-color:#3c4251}.dark-mode .review-inline-change{background:#4a2424;color:#ffb4ac}.dark-mode .modal-content{background:#111;color:#d4dbe7}.dark-mode .mailbox-item{border-color:#3c4251;background:#121212}.dark-mode .mailbox-item.unread{border-color:#8a3a36;background:#412626}.dark-mode .mailbox-item-time{color:#b8c2d6}.dark-mode .mailbox-select-all-text{color:#7eb8ff}.dark-mode .mailbox-select-all-text:disabled{color:#7a8a9e}.dark-mode .form-page{background:#22262e;box-shadow:0 2px 8px rgba(0,0,0,.4)}.dark-mode .login-card{background:#22262e;box-shadow:0 8px 24px rgba(0,0,0,.4)}.dark-mode .login-card h2{color:#d4dbe7}.dark-mode .login-input{background:#2a2f3b;color:#d4dbe7;border-color:#3c4251}.dark-mode .login-page{background:#1a1d23}
/*# sourceMappingURL=main.9841beb9.chunk.css.map */