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}.App{text-align:center}.role-container{align-items:center;background-color:#ffffff4d;display:flex;margin-left:20px;padding:2px 8px}.role{color:#000;margin-right:20px}.role,.role-label{align-self:center;font-size:24px;font-weight:700;margin-left:20px}.role-label{color:#ff9600e6}.button-container{align-items:center;background:linear-gradient(90deg,#ffb34799,#fc39);box-shadow:0 2px 5px #0000001a;display:flex;gap:1px;height:60px;margin:0;padding:0 20px;width:100%}.logo-text{color:#333;font-family:Arial Black,sans-serif;font-size:24px;letter-spacing:2px;margin-right:30px;padding-left:15px}.icon-placeholder{background-position:50%;background-repeat:no-repeat;background-size:contain}.btn{background-color:initial;border:none;color:#000;cursor:pointer;font-size:16px;font-weight:bolder;padding:12px 24px;transition:all .3s ease}.btn:hover{background-color:#ffffff4d}.btn:first-child{border-bottom-left-radius:4px;border-top-left-radius:4px}.btn:last-child{border-bottom-right-radius:4px;border-top-right-radius:4px}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{animation:App-logo-spin 20s linear infinite}}.App-header{align-items:center;background-color:#282c34;color:#fff;display:flex;flex-direction:column;font-size:calc(10px + 2vmin);justify-content:center;min-height:100vh}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.home-content{align-items:center;background-color:#f8f1e0;display:flex;flex-direction:column;height:calc(100vh - 60px);justify-content:flex-start;padding:20px 0;position:relative}.home-title{align-self:flex-end;color:#333;font-size:24px;margin:20px}.register-content{background-color:#f8f1e0;min-height:calc(100vh - 60px);padding:20px}.user-list-container{margin:0 auto;max-width:1000px}.buton-group{align-items:center;display:flex}.btn-upload-attributes{background-color:#ffb34799;border-radius:4px;font-weight:700;margin-right:20px;padding:10px 20px}.btn-upload-attributes:hover{background-color:#ffb347cc}.attributes-upload-pre{color:#4caf50;font-weight:700;margin-bottom:10px}.btn-add-user{background-color:#ffb34799;border-radius:4px;font-weight:700;margin-left:10px;padding:10px 20px}.btn-add-user:hover{background-color:#ffb347cc}.user-table{background-color:#fff;border-collapse:collapse;box-shadow:0 2px 5px #0000001a;margin-top:20px;width:100%}.user-table td,.user-table th{border-bottom:1px solid #ddd;padding:12px 15px;text-align:center}.user-table th{background-color:#ffb34733;font-weight:700}.user-table tr:hover{background-color:#ffb3470d}.btn-download{background-color:#64c86499;margin-right:10px}.btn-download:hover{background-color:#64c864cc}.btn-delete{background-color:#c8646499;border-radius:4px}.btn-delete:hover{background-color:#c86464cc}.add-user-modal{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.modal-content{box-shadow:0 4px 10px #0003;padding:30px;width:400px}.modal-content h3{color:#333;margin-top:0}.modal-content input{border:1px solid #ddd;border-radius:4px;font-size:16px;margin:15px 0;padding:10px;width:100%}.modal-buttons{gap:10px}.btn-generate-attributes{background-color:#ffb34799;border-radius:4px;font-weight:700;padding:10px 20px}.btn-generate-attributes:hover{background-color:#ffb347cc}.attribute-pool-modal{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.attribute-pool-modal .modal-content{background-color:#fff;border-radius:8px;box-shadow:0 4px 20px #0003;display:flex;flex-direction:column;max-height:80vh;max-width:90%;padding:20px;width:800px}.attribute-pool-modal h5{color:#333;font-size:16px;margin:0 0 15px;text-align:center}.attribute-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(70px,1fr));max-height:calc(80vh - 100px);overflow-y:auto;padding:10px}.attribute-item{border:1px solid #ddd;font-size:12px;overflow:hidden;padding:4px 6px;text-align:center;text-overflow:ellipsis;transition:all .2s;white-space:nowrap}.attribute-item.selected{background-color:#e0f7fa;border-color:#006064}.attribute-pool-modal .btn-confirm{align-self:center;background-color:#4caf50;border:none;border-radius:4px;color:#fff;cursor:pointer;margin-top:15px;padding:8px 20px}.attribute-pool-modal .btn-confirm:hover{background-color:#3e8e41}.btn-confirm{background-color:#ffb34799;border-radius:4px}.btn-confirm:hover{background-color:#ffb347cc}.btn-cancel{background-color:#c8c8c899;border-radius:4px}.btn-cancel:hover{background-color:#c8c8c8cc}.attributes-display-section{background-color:#f9f9f9;border:1px solid #ddd;border-radius:4px;margin-bottom:15px;padding:12px}.attributes-title{color:#333;font-size:14px;font-weight:500;margin-bottom:8px}.attributes-divider{background-color:#eee;height:1px;margin:8px 0}.attributes-container{align-items:center;display:flex;justify-content:center;min-height:60px}.empty-attributes-hint{color:#999;font-size:13px;text-align:center}.attributes-list{display:flex;flex-wrap:wrap;gap:8px}.attribute-tag{background-color:#e0f7fa;border-radius:12px;color:#006064;font-size:12px;padding:4px 8px}.attributes-section{background-color:#ffffffb3;border-radius:8px;margin-top:20px;padding:15px}.attribute-form{flex-direction:column}.attribute-form,.attribute-inputs{display:flex;gap:10px}.attribute-inputs input{border:1px solid #ddd;border-radius:4px;flex:1 1;padding:8px}.btn-add-attribute{align-self:flex-start;background-color:#64c86499;padding:8px 15px}.btn-add-attribute:hover{background-color:#64c864cc}.attributes-list{border-top:1px solid #eee;margin-top:15px;padding-top:10px}.attributes-header{display:grid;font-weight:700;grid-template-columns:1fr 1fr 80px;margin-bottom:8px;padding:0 5px}.btn-remove-attribute{background-color:#c8646499;font-size:12px;padding:4px 8px}.btn-remove-attribute:hover{background-color:#c86464cc}.user-id-input{border:1px solid #ddd;border-radius:4px;margin-bottom:10px;padding:10px;width:100%}.attribute-hover-trigger{cursor:pointer;position:relative}.attribute-icon{background-color:#ffb34799;border-radius:50%;color:#fff;display:inline-block;font-weight:700;height:20px;line-height:20px;text-align:center;width:20px}.attribute-tooltip{background-color:#fff;border-radius:4px;bottom:100%;box-shadow:0 2px 8px #0000001a;display:none;left:50%;margin-bottom:10px;min-width:150px;padding:10px;position:absolute;transform:translateX(-50%);z-index:100}.attribute-hover-trigger:hover .attribute-tooltip{display:block}.attribute-tooltip div{border-bottom:1px solid #f0f0f0;padding:5px 0}.attribute-tooltip div:last-child{border-bottom:none}.encrypt-content{align-items:center;background-color:#f8f1e0;display:flex;flex-direction:column;min-height:calc(100vh - 60px);padding:20px}.encrypt-illustration{align-items:center;background-color:#ffffff80;border-radius:8px;box-shadow:0 2px 5px #0000001a;color:#666;display:flex;font-size:18px;gap:20px;justify-content:center;margin-bottom:20px;max-width:600px;min-height:200px;width:100%}.decrypt-content{align-items:center;background-color:#f8f1e0;display:flex;flex-direction:column;min-height:calc(100vh - 60px);padding:20px}.decrypt-illustration{align-items:center;background-color:#ffffff80;border-radius:8px;box-shadow:0 2px 5px #0000001a;color:#666;display:flex;font-size:18px;gap:20px;justify-content:center;margin-bottom:20px;max-width:600px;min-height:200px;width:100%}.file-upload-section{margin:0 auto 30px;max-width:600px;padding:0 20px;text-align:center;width:100%}.upload-group{align-items:center;display:flex;gap:15px;margin-bottom:20px}.btn-upload{background-Color:#4caf50;border-Radius:6px;box-Shadow:0 2px 5px #0000001a;color:#fff;cursor:pointer;display:inline-block;font-size:16px;font-weight:500;padding:10px 20px;position:relative;transition:all .3s ease}.btn-upload:hover{background-color:#3e8e41;box-shadow:0 4px 8px #00000026;transform:translateY(-2px)}.btn-upload:active{box-shadow:0 2px 3px #0000001a;transform:translateY(0)}.file-info{align-items:center;display:flex;gap:10px}.btn-preview{background-color:#64c86499;border-radius:4px;font-size:14px;padding:5px 10px}.btn-preview:hover{background-color:#64c864cc}.btn-encrypt-action{background-color:#ff646499;border-radius:4px;font-size:18px;margin-bottom:30px;padding:12px 30px}.btn-encrypt-action:hover{background-color:#ff6464cc}.btn-encrypt-action:disabled{background-color:#c8c8c899;cursor:not-allowed}.btn-decrypt-action{background-color:#f764ff99;border-radius:4px;font-size:18px;margin-bottom:30px;padding:12px 30px}.btn-decrypt-action:hover{background-color:#f764ffcc}.btn-decrypt-action:disabled{background-color:#c8c8c899;cursor:not-allowed}.result-section{background-color:#fff;border-radius:8px;box-shadow:0 2px 5px #0000001a;max-width:800px;padding:20px;width:100%}.result-section h3{color:#333;margin-top:0}.result-content{margin-top:15px}.result-content pre{word-wrap:break-word;background-color:#f5f5f5;border-radius:4px;max-height:200px;overflow-y:auto;padding:10px;white-space:pre-wrap}.btn-download{background-color:#6464ff99;border-radius:4px;margin-top:15px}.btn-download:hover{background-color:#6464ffcc}.test-content{background-color:#f8f1e0;border:1px solid #e0e0e0;border-radius:12px;box-shadow:0 4px 12px #00000014;min-height:calc(100vh - 60px);padding:20px}.test-container,.test-content{align-items:center;display:flex;flex-direction:column}.test-container{gap:20px;width:100%}.test-illustration{background-color:#f9f9f9;border:1px solid #f0f0f0;border-radius:8px;height:200px;margin:0 auto;width:700px}.btn-test-action{background-color:#2196f3;border:none;border-radius:6px;box-shadow:0 3px 6px #00000029;color:#fff;cursor:pointer;font-size:16px;font-weight:600;margin-top:10px;padding:14px 28px;transition:all .3s;width:300px}.btn-test-action:hover{background-color:#0b7dda;box-shadow:0 5px 10px #0003;transform:translateY(-2px)}.btn-test-action:active{box-shadow:0 2px 5px #0003;transform:translateY(0)}.btn-test-action:disabled{background-color:#ccc;box-shadow:none;cursor:not-allowed;transform:none}.test-result{background-color:#fff;border:1px solid #ddd;border-radius:8px;box-sizing:border-box;margin:20px 0;padding:20px;width:100%}.test-result h3{border-bottom:1px solid #eee;margin-bottom:15px;padding-bottom:10px}.result-summary{font-size:24px;font-weight:700;margin:20px 0}.ciphertext-pool{display:flex;flex-wrap:wrap;gap:15px;justify-content:center;margin-top:30px}.ciphertext-pool-item{align-items:center;border:1px solid #ddd;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;gap:8px;padding:10px 15px;transition:background-color .3s ease;width:100px}.ciphertext-pool-item:hover{background-color:#f5f5f5}.cipher-pool-modal{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.cipher-pool-modal .modal-content{background-color:#fff;border-radius:8px;box-shadow:0 4px 20px #0003;max-height:80%;max-width:80%;overflow-y:auto;padding:30px}.cipher-pool-modal h3{color:#333;margin-top:0;text-align:center}.cipher-pool-modal .btn-cancel{background-color:#c8646499;border:none;border-radius:4px;color:#fff;cursor:pointer;display:block;margin-left:auto;margin-right:auto;margin-top:20px;padding:10px 20px}.cipher-pool-modal .btn-cancel:hover{background-color:#c86464cc}.test-file-list{background-color:#fff;border:1px solid #eee;border-radius:4px;box-shadow:0 2px 5px #0000001a;margin-top:20px;padding:15px;width:600px}.test-file-list h3{border-bottom:1px solid #eee;color:#333;font-weight:700;margin-top:0;padding-bottom:10px}.test-file-list table{border-collapse:collapse;margin-top:10px;width:100%}.test-file-list th{background-color:#ffb34733;font-weight:700;padding:12px 15px;text-align:center}.test-file-list td{border-bottom:1px solid #ddd;padding:12px 15px;text-align:center}.test-file-list tr{background-color:#f5f5f5}.test-file-list tr:hover{background-color:#ffb3470d}.test-file-list select{border:1px solid #ddd;border-radius:4px;font-size:14px;padding:8px}.test-file-list button{background-color:#c8646499;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;padding:8px 12px}.test-file-list button:hover{background-color:#c86464cc}@media (max-width:768px){.button-container{gap:0;height:50px;padding:0 10px}.btn{font-size:14px;padding:8px 12px}.logo-text{font-size:18px;margin-right:15px;padding-left:10px}.App{max-width:100%;overflow-x:hidden;width:100%}.encrypt-content,.register-content,.test-content{padding:10px}.attribute-inputs,.upload-group{flex-direction:column;gap:8px}.btn-encrypt-action,.btn-upload{padding:10px;width:100%}}.access-control-modal{align-items:center;background-color:#00000080;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1000}.modal-content{background-color:#fff;border-radius:8px;box-shadow:0 2px 10px #0003;max-width:90%;padding:20px;width:600px}.expression-editor{border:1px solid #ddd;font-size:16px;line-height:1.5;margin:15px 0;min-height:100px;padding:15px}.expression-editor .nested-operator,.expression-editor .operator-node{align-items:center;display:inline-flex;flex-wrap:nowrap;vertical-align:middle}.bracket-container{align-items:center;display:inline-flex;margin:0 5px;position:relative;white-space:nowrap}.nested-operator{background-color:#f8f9fa;border-radius:4px;margin:0 2px;padding:2px 4px}.nested-bracket{align-items:center;display:inline-flex;margin:0 2px;padding:0 4px;white-space:nowrap}.nested-operator .bracket-container{margin:0 2px}.bracket{color:#333;font-size:18px}.placeholder-button{align-items:center;background-color:#007bff1a;border:1px dashed #007bff80;border-radius:4px;cursor:pointer;display:inline-flex;justify-content:center;min-height:24px;min-width:20px;outline:none;padding:2px 8px;transition:all .2s}.placeholder-button.editable{background-color:#007bff33}.placeholder-button:not(.editable){background-color:initial;border:none;cursor:default}.operator-symbol{font-weight:700;margin:0 5px}.attribute-node{color:#28a745;font-weight:500}.context-menu{background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 2px 10px #0000001a;position:absolute;z-index:1001}.context-menu button{background:none;border:none;cursor:pointer;display:block;padding:8px 15px;text-align:left;width:100%}.context-menu button:hover{background-color:#f8f9fa}.menu-divider{background-color:#eee;height:1px;margin:4px 0}.attribute-selector-overlay{align-items:center;background-color:#00000080;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1002}.attribute-selector{background-color:#fff;border-radius:8px;max-width:90%;padding:20px;width:400px}.attribute-list{margin:15px 0;max-height:300px;overflow-y:auto}.attribute-item{border-radius:4px;cursor:pointer;padding:8px 15px}.attribute-item:hover{background-color:#f8f9fa}.attribute-item.selected{background-color:#e9ecef}.modal-buttons{display:flex;justify-content:flex-end;margin-top:20px}.btn-cancel,.btn-confirm{border-radius:4px;cursor:pointer;margin-left:10px;padding:8px 15px}.btn-cancel{background-color:#f8f9fa;border:1px solid #ddd}.btn-confirm{background-color:#007bff;border:1px solid #007bff;color:#fff}.btn-confirm:disabled{background-color:#6c757d;border-color:#6c757d;cursor:not-allowed}
/*# sourceMappingURL=main.ced174da.css.map*/