*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,#f5efe6,#f3e8dd);color:#5b4a3c;overflow-x:hidden}.app{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.app-centered{flex-direction:column;text-align:center;gap:12px}.card{width:100%;max-width:520px;background:#fffaf5;border:1px solid #eddcc9;border-radius:20px;padding:24px;display:flex;flex-direction:column;gap:14px;box-shadow:0 10px 30px #795e481f}.auth-card{max-width:560px;padding:18px;background:radial-gradient(circle at top left,rgba(240,223,207,.9),transparent 34%),linear-gradient(180deg,#fffaf5,#fdf5ed)}.auth-shell{border-radius:18px;overflow:hidden;background:#fffaf5e0;border:1px solid rgba(216,188,162,.6)}.auth-panel{padding:28px;display:flex;flex-direction:column;gap:22px}.auth-header{display:flex;align-items:center;gap:16px}.auth-brand{display:flex;flex-direction:column;gap:6px}.auth-tabs,.oauth-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.auth-tab{border:1px solid #d8bca2;background:#f8ecdfe6;color:#6d533f;border-radius:14px;padding:12px 14px;font-weight:700;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,transform .2s ease}.auth-tab.active{background:#e8cfb7;border-color:#cfa887;transform:translateY(-1px)}.auth-form{gap:16px}.form-intro{display:flex;flex-direction:column;gap:6px}.form-intro h2{margin:0;font-size:1.45rem;color:#5f4a38}.form-intro p{color:#856a54;line-height:1.45}.field{display:flex;flex-direction:column;gap:8px}.field-label{font-size:13px;font-weight:700;color:#7c624e;letter-spacing:.02em}.form-actions{display:flex;flex-direction:column;gap:10px;padding-top:4px}.auth-actions-stack{gap:12px}.auth-submit{width:100%;min-height:48px;border-radius:14px}.auth-secondary-btn{background:#f9efe4}.auth-support{display:flex;flex-direction:column;gap:14px;padding-top:4px;border-top:1px solid #ead7c3}.auth-link-btn{align-self:flex-start;padding:0;border:0;background:none;color:#8d6c52;font:inherit;font-weight:600;cursor:pointer}.auth-link-btn:hover{color:#6d533f}.forgot-form{padding:16px;border-radius:16px;background:#f8ecdfa6;border:1px solid #ecd9c4}.logo{width:52px;height:52px;border-radius:14px;background:#f0dfcf;color:#8d6c52;display:grid;place-items:center;font-size:24px;font-weight:700}.subtitle{color:#856a54;margin-top:-6px}h1{margin:0;font-size:2.1rem}p{margin:0}.form{display:flex;flex-direction:column;gap:10px}.form.compact{margin-top:2px}input{width:100%;border:1px solid #e8d2bc;border-radius:12px;background:#fff;color:#5b4a3c;padding:10px 12px;font-size:14px}textarea{width:100%;border:1px solid #e8d2bc;border-radius:12px;background:#fff;color:#5b4a3c;padding:10px 12px;font-size:14px;resize:vertical;min-height:110px;font-family:inherit}input:focus{outline:none;border-color:#ccab8f}textarea:focus{outline:none;border-color:#ccab8f}.input-error{border-color:#d25a5a!important;box-shadow:0 0 0 2px #d25a5a1f}.field-error{margin-top:-4px;font-size:13px;color:#b03b3b}.btn{border:1px solid #d8bca2;background:#f8ecdf;color:#6d533f;border-radius:12px;padding:10px 12px;font-weight:600;cursor:pointer;text-align:center;text-decoration:none}.btn.active{background:#e8cfb7;border-color:#cfa887}.btn:hover{filter:brightness(.98)}.status{background:#f4e6d8;border:1px solid #e1c7ad;border-radius:12px;padding:10px;font-size:14px;overflow-wrap:anywhere}@media (max-width: 640px){.app{padding:16px}.auth-card{padding:12px}.auth-panel{padding:20px;gap:18px}.auth-header{align-items:flex-start}.auth-tabs,.oauth-row{grid-template-columns:1fr}.form-intro h2{font-size:1.25rem}}.admin-shell{min-height:100vh;display:grid;grid-template-columns:280px 1fr}.admin-sidebar{background:#f6efe6;border-right:1px solid #e7d8c7;padding:24px;display:flex;flex-direction:column;gap:14px}.admin-sidebar h2{margin:0;font-size:24px}.admin-menu{display:flex;flex-direction:column;gap:8px}.admin-user{margin-top:auto;display:flex;flex-direction:column;gap:2px}.admin-user span{color:#8f765f;font-size:13px}.admin-content{padding:28px;display:flex;flex-direction:column;gap:14px}.admin-content h1{margin:0;font-size:30px}.admin-card{max-width:980px}.roles-list{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px}.role-chip{display:inline-block;border:1px solid #d9c0a9;border-radius:999px;padding:6px 10px;background:#f8eee3;font-size:13px}.users-list{display:flex;flex-direction:column;gap:10px}.users-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.users-table-wrap{overflow-x:auto;overflow-y:auto;max-height:420px;border:1px solid #e8d2bc;border-radius:12px;background:#fff}.users-table{width:100%;border-collapse:collapse}.users-table th,.users-table td{text-align:left;padding:8px 10px;border-bottom:1px solid #f0e0d0;font-size:13px;vertical-align:middle}.users-table th{font-weight:700;color:#6c5642}.user-row{border:1px solid #e8d2bc;border-radius:12px;padding:10px;display:flex;align-items:center;justify-content:space-between;gap:10px}.user-meta{display:flex;flex-direction:column;gap:2px}.user-meta span{color:#8f765f;font-size:13px}.user-actions{display:flex;gap:8px}.user-actions.compact{justify-content:flex-end}.user-actions.compact .btn{padding:8px 10px}.user-actions.compact select{min-width:120px}select{border:1px solid #e8d2bc;border-radius:10px;padding:8px 10px;background:#fff;color:#5b4a3c}.memory-shell{min-height:100vh;padding:24px;display:flex;justify-content:center;align-items:flex-start}.memory-main-card{width:100%;max-width:860px;gap:16px}.memory-dashboard-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;flex-wrap:wrap}.memory-dashboard-copy{display:flex;flex-direction:column;gap:6px}.memory-toolbar{display:flex;flex-direction:column;gap:12px;margin-left:auto;min-width:min(100%,360px)}.memory-toolbar-user{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border:1px solid #ead7c3;border-radius:16px;background:#f8ecdf8c}.memory-toolbar-user span{color:#8a6d56;font-size:14px;overflow-wrap:anywhere}.memory-toolbar-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.memory-dashboard-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.memory-summary-card{border:1px solid #ead7c3;border-radius:16px;padding:16px;background:#f8ecdf73;display:flex;flex-direction:column;gap:6px}.memory-summary-card strong{font-size:1.6rem;color:#5f4a38}.memory-summary-label{font-size:13px;font-weight:700;color:#856a54;letter-spacing:.02em}.memory-form-card{width:100%;max-width:680px}.memory-head{display:flex;align-items:center;gap:12px}.memory-head .btn{margin-left:auto}.memory-create-card{max-width:100%;box-shadow:none;border-style:dashed}.privacy-toggle{display:flex;align-items:center;gap:8px;font-size:14px}.privacy-toggle input{width:auto}.memory-list{display:flex;flex-direction:column;gap:10px}.memory-card-main{flex:1;display:flex;align-items:center;gap:14px;min-width:0;border:0;background:transparent;padding:0;color:inherit;text-align:left;cursor:pointer}.memory-avatar{width:72px;height:72px;border-radius:50%;object-fit:cover;border:1px solid #e8d2bc;background:#fff;flex-shrink:0}.memory-avatar-fallback{display:grid;place-items:center;font-size:28px;font-weight:700;background:#ead7c4;color:#7a6049}.memory-item-title-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.memory-preview-text{color:#755c48;margin-top:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.memory-item{background:#fff;border:1px solid #e8d2bc;border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:8px}.memory-item-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.memory-item-actions{display:flex;gap:8px}.memory-media-section{margin-top:8px;border-top:1px solid #efdfcf;padding-top:10px;display:flex;flex-direction:column;gap:10px}.memory-media-section h4{margin:0;font-size:15px}.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.media-card{border:1px solid #ead8c6;border-radius:10px;padding:8px;display:flex;flex-direction:column;gap:8px;background:#fffdfb}.media-card img,.media-card video{width:100%;border-radius:8px;border:1px solid #e8d2bc;background:#fff}.media-text{white-space:pre-wrap;font-size:14px}.btn.danger{border-color:#d7adad;background:#f9e6e6;color:#834646}.memory-badge{border:1px solid #d9c0a9;border-radius:999px;padding:4px 8px;font-size:12px;background:#f8eee3}.memory-badge.public{background:#e8f5e7;border-color:#b7d9b5;color:#3f6b3f}.memory-badge.private{background:#f7ece4;border-color:#e0c5ae;color:#7a5b45}.memory-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.memory-form-heading{display:flex;flex-direction:column;gap:6px}.memory-form-heading h2{margin:0}.memory-form-preview{display:block;width:96px;height:96px;object-fit:cover;border-radius:16px;border:1px solid #e8d2bc;margin:8px 0 12px}.memory-form-actions{display:flex;gap:10px}.memory-form-back{align-self:flex-start}.file-input-hidden{display:none}.upload-field{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.upload-field-hint{color:#856a54;font-size:14px;overflow-wrap:anywhere}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#34251873;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}.modal-card{position:relative;width:min(560px,100%);max-height:calc(100vh - 40px);overflow-y:auto;background:#fffaf5;border:1px solid #e8d2bc;border-radius:20px;padding:24px;box-shadow:0 20px 50px #3222162e}.modal-close{position:absolute;top:14px;right:16px;border:0;background:transparent;font-size:28px;color:#7a5b45;cursor:pointer}.share-panel{display:flex;flex-direction:column;gap:14px}.share-panel h2{margin:0}.share-qr{display:flex;justify-content:center}.share-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.share-warning,.share-status{font-size:14px}.share-warning{color:#8b5f27}.admin-filters{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.admin-memory-list{display:flex;flex-direction:column;gap:10px}.admin-memory-row{border:1px solid #e8d2bc;background:#fff;color:#5b4a3c;border-radius:12px;padding:12px 14px;display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px;text-align:left;cursor:pointer}.admin-section-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.admin-memory-detail{max-width:980px}.admin-memory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.admin-text-list,.public-memory-text-list{display:flex;flex-direction:column;gap:10px}.public-memory-shell{min-height:100vh;padding:24px;display:flex;justify-content:center}.public-memory-card{width:100%;max-width:860px}.public-memory-hero,.gallery-image{width:100%;border-radius:16px;border:1px solid #e8d2bc;background:#fff}.gallery-image{aspect-ratio:1 / 1;object-fit:cover}.public-memory-header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.public-memory-text,.public-memory-meta{line-height:1.5}.public-memory-section{display:flex;flex-direction:column;gap:10px}.profile-page{width:100%;max-width:980px;gap:18px}.profile-topbar{display:flex;justify-content:flex-start}.profile-layout{display:flex;flex-direction:column;gap:18px}.profile-hero{display:grid;grid-template-columns:auto 1fr auto;gap:20px;align-items:center;border:1px solid #ead7c3;border-radius:18px;padding:20px;background:#f8ecdf73}.profile-avatar-wrap{display:flex;align-items:center;justify-content:center}.profile-avatar{width:108px;height:108px;border-radius:50%;object-fit:cover;border:1px solid #e8d2bc;background:#fff}.profile-avatar-fallback{display:grid;place-items:center;font-size:2rem;font-weight:700;background:#ead7c4;color:#7a6049}.profile-hero-text{display:flex;flex-direction:column;gap:8px}.profile-hero-text h1,.profile-section-head h2{margin:0}.profile-email{color:#8a6d56;overflow-wrap:anywhere}.profile-hero-actions{display:flex;justify-content:flex-end}.profile-sections{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.profile-section{border:1px solid #ead7c3;border-radius:18px;padding:20px;background:#fffdfb;display:flex;flex-direction:column;gap:16px}.profile-section-head{display:flex;flex-direction:column;gap:6px}.profile-password-grid{display:grid;gap:12px}.profile-actions{display:flex;justify-content:flex-start}.profile-status-error{background:#f9e6e6;border-color:#d7adad;color:#834646}.profile-loading{padding:32px;text-align:center}@media (max-width: 1024px){.admin-shell{grid-template-columns:1fr}.admin-sidebar{border-right:0;border-bottom:1px solid #e7d8c7}.admin-menu{flex-direction:row}.admin-user{margin-top:0}.admin-content{padding:18px}}@media (max-width: 720px){.app,.memory-shell{padding:12px}.card{padding:16px;border-radius:14px}h1{font-size:1.6rem}.switcher{grid-template-columns:1fr}.btn,input,select{min-height:42px}.admin-sidebar,.admin-content{padding:12px}.admin-menu{flex-direction:column}.memory-head{align-items:flex-start;flex-direction:column}.memory-head .btn{margin-left:0;width:100%}.memory-dashboard-head{flex-direction:column}.profile-hero,.profile-sections{grid-template-columns:1fr}.memory-toolbar{width:100%;min-width:0;margin-left:0}.memory-toolbar-actions,.profile-hero-actions,.profile-actions{flex-direction:column;align-items:stretch}.memory-dashboard-summary{grid-template-columns:1fr}.memory-item-head{flex-direction:column;align-items:flex-start}.memory-item-actions,.user-actions.compact,.memory-form-actions{flex-direction:column;align-items:stretch}.memory-form-grid,.admin-memory-grid,.admin-filters,.share-actions,.admin-memory-row{grid-template-columns:1fr}.memory-card-main{align-items:flex-start}.users-table th,.users-table td{font-size:12px;padding:7px 8px}.users-table thead{display:none}.users-table,.users-table tbody,.users-table tr,.users-table td{display:block;width:100%}.users-table tr{border-bottom:1px solid #f0e0d0;padding:10px}.users-table td{border:0;padding:6px 0}.users-table td:before{content:attr(data-label);display:block;font-size:11px;color:#8f765f;margin-bottom:4px}.user-actions.compact select,.user-actions.compact .btn,.memory-item-actions .btn,.media-card .btn,.share-actions .btn,.memory-toolbar-actions .btn,.profile-hero-actions .btn,.profile-actions .btn{width:100%}.media-grid{grid-template-columns:1fr}}@media (max-width: 420px){.card{padding:14px}h1{font-size:1.4rem}.subtitle{font-size:13px}.memory-item{padding:10px}.public-memory-shell{padding:12px}}
