
:root{--violet:#7c3aed}
body{background:linear-gradient(180deg,#fdf4f5 0%,#f5f3ff 100%);padding:16px;padding-bottom:80px}
header{position:relative;z-index:1;text-align:center;margin-bottom:24px}
.header-cat{width:32px;height:32px;vertical-align:middle;margin-right:6px;margin-top:-10px;margin-bottom:4px;animation:cat-pulse 5s ease-in-out infinite}
@keyframes cat-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.25)}}
header h1{font-size:22px;font-weight:700;background:linear-gradient(135deg,var(--pink) 0%,var(--purple) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.admin-bar{position:relative;z-index:1;display:flex;justify-content:center;margin-bottom:16px}
.btn-add{background:linear-gradient(135deg,var(--pink) 0%,var(--purple) 100%);color:#fff;border:none;padding:10px 20px;border-radius:12px;font-size:14px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:6px}
.btn-add:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(167,139,250,0.3)}
.portfolio-grid{display:flex;flex-direction:column;gap:16px}
.portfolio-card{position:relative;border-radius:16px;padding:16px;transition:transform .2s}.portfolio-card::before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,0.95);border:1px solid rgba(216,180,254,0.3);box-shadow:0 2px 8px rgba(167,139,250,0.08);border-radius:16px;z-index:0}.portfolio-card>*{position:relative;z-index:2}
.portfolio-card:hover{transform:translateY(-2px)}
.card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}
.card-title{font-size:16px;font-weight:600;color:var(--violet)}
.card-actions{display:flex;gap:8px}
.btn-edit,.btn-delete,.btn-move{background:none;border:none;font-size:16px;cursor:pointer;padding:4px;border-radius:6px;transition:background .2s}
.btn-edit:hover{background:rgba(167,139,250,0.2)}
.btn-delete:hover{background:rgba(239,68,68,0.2)}
.btn-move{font-size:14px;color:var(--purple);opacity:0.7}
.btn-move:hover{background:rgba(167,139,250,0.2);opacity:1}
.card-description{font-size:14px;color:#555;margin-bottom:12px}
.card-capabilities{font-size:13px;color:var(--tg-theme-hint-color);margin-bottom:12px}
.card-capabilities strong{color:var(--violet)}
.card-link{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--tg-theme-link-color);text-decoration:none;padding:8px 12px;background:rgba(36,129,204,0.1);border-radius:8px}
.card-link:hover{background:rgba(36,129,204,0.2)}
.empty-state{text-align:center;padding:40px 20px;color:var(--tg-theme-hint-color)}
.empty-state .icon{font-size:48px;margin-bottom:16px}
.loading{text-align:center;padding:20px;color:var(--tg-theme-hint-color)}
.loading-more{text-align:center;padding:20px;color:var(--tg-theme-hint-color);font-size:14px}
.card-footer{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap}
.review-badge{font-size:42px;cursor:pointer;transition:transform .2s;animation:pulse 1.2s infinite;filter:drop-shadow(0 0 6px rgba(255,70,100,0.5));display:inline-flex;align-items:center}
.review-heart{width:42px;height:42px;object-fit:contain}
.review-badge:hover{transform:scale(1.3);animation:none}
@keyframes pulse{0%,100%{transform:scale(1);filter:drop-shadow(0 0 4px gold)}50%{transform:scale(1.35);filter:drop-shadow(0 0 10px gold)}}

/* Модальные окна */
.modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.5);display:none;align-items:center;justify-content:center;z-index:1000;padding:16px}
.modal.show{display:flex}
.modal-content{background:#fff;border-radius:20px;padding:24px;width:100%;max-width:400px;max-height:90vh;overflow-y:auto}
.modal-title{font-size:18px;font-weight:600;color:var(--violet);margin-bottom:20px;text-align:center}
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:13px;color:#666;margin-bottom:6px}
.form-group input,.form-group textarea{width:100%;padding:10px 12px;border:1px solid rgba(167,139,250,0.3);border-radius:10px;font-size:14px;transition:border-color .2s}
.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--purple)}
.form-group textarea{min-height:80px;resize:vertical}
.modal-buttons{display:flex;gap:10px;margin-top:20px}
.modal-buttons button{flex:1;padding:12px;border-radius:12px;border:none;font-size:14px;font-weight:500;cursor:pointer}
.btn-cancel{background:#f1f5f9;color:#64748b}
.btn-save{background:linear-gradient(135deg,var(--pink) 0%,var(--purple) 100%);color:#fff}
.btn-confirm-delete{background:#ef4444;color:#fff}
.confirm-text{text-align:center;font-size:15px;color:#555;margin-bottom:20px}
.confirm-item{font-weight:600;color:var(--violet)}

/* Links editor */
.link-row{display:flex;gap:6px;align-items:center;margin-bottom:8px}
.link-row .link-emoji{width:42px;min-width:42px;text-align:center;font-size:18px;padding:8px 4px;border:1px solid rgba(167,139,250,0.3);border-radius:10px;background:#fff}
.link-row .link-text{flex:1;min-width:0;padding:8px 10px;border:1px solid rgba(167,139,250,0.3);border-radius:10px;font-size:13px}
.link-row .link-url{flex:2;min-width:0;padding:8px 10px;border:1px solid rgba(167,139,250,0.3);border-radius:10px;font-size:13px}
.link-row .link-emoji:focus,.link-row .link-text:focus,.link-row .link-url:focus{outline:none;border-color:var(--purple)}
.btn-remove-link{background:none;border:none;font-size:18px;cursor:pointer;padding:4px;color:#ef4444;line-height:1}
.btn-remove-link:hover{transform:scale(1.2)}
.btn-add-link{background:none;border:1px dashed rgba(167,139,250,0.4);color:var(--purple);padding:8px 12px;border-radius:10px;font-size:13px;cursor:pointer;width:100%;margin-top:4px}
.btn-add-link:hover{background:rgba(167,139,250,0.1)}

/* Review modal */
.review-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(102,78,170,0.4);display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px;backdrop-filter:blur(4px)}
.review-content{background:linear-gradient(135deg,#fdf2f8 0%,#f5f0ff 50%,#ede9fe 100%);border-radius:20px;padding:24px;max-width:360px;width:100%;box-shadow:0 8px 32px rgba(147,112,219,0.3)}
.review-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid rgba(216,180,254,0.3)}
.review-client{font-weight:600;color:#7c3aed;font-size:16px}
.review-close{font-size:22px;cursor:pointer;color:#a78bfa}
.review-stars{font-size:24px;margin-bottom:16px;display:flex;gap:4px}
.star-1{color:#6A6A6A}.star-2{color:#F28B8B}.star-3{color:#F6D36A}.star-4{color:#7FB3FF}.star-5{color:#8DDC9B}.star-empty{color:#ddd}
.review-text{font-size:15px;color:#4a4a4a;line-height:1.6;font-style:italic;background:rgba(255,255,255,0.6);padding:20px;border-radius:12px}
/* Bubbles */
.bubbles{position:fixed;top:0;left:0;right:0;bottom:0;overflow:hidden;z-index:1;pointer-events:none}
.bubble{position:absolute;border-radius:50%;opacity:0.35;animation:float-bubble 6s infinite ease-in-out}
.bubble:nth-child(1){width:80px;height:80px;left:10%;background:#f797ab;animation-delay:0s;animation-duration:25s}
.bubble:nth-child(2){width:60px;height:60px;left:20%;background:#8ab4cf;animation-delay:2s;animation-duration:20s}
.bubble:nth-child(3){width:100px;height:100px;left:35%;background:#8ed49c;animation-delay:4s;animation-duration:28s}
.bubble:nth-child(4){width:50px;height:50px;left:50%;background:#ffcc4d;animation-delay:1s;animation-duration:22s}
.bubble:nth-child(5){width:70px;height:70px;left:65%;background:#a78bfa;animation-delay:3s;animation-duration:24s}
.bubble:nth-child(6){width:90px;height:90px;left:80%;background:#f797ab;animation-delay:5s;animation-duration:26s}
.bubble:nth-child(7){width:45px;height:45px;left:90%;background:#8ab4cf;animation-delay:2.5s;animation-duration:21s}
.bubble:nth-child(8){width:55px;height:55px;left:5%;background:#8ed49c;animation-delay:6s;animation-duration:23s}
@keyframes float-bubble{0%,100%{transform:translateY(100vh) scale(0.8);opacity:0}10%{opacity:0.4;transform:translateY(80vh) scale(1)}30%{transform:translateY(60vh) scale(1.2);opacity:0.5}50%{transform:translateY(40vh) scale(0.9);opacity:0.45}70%{transform:translateY(20vh) scale(1.1);opacity:0.4}90%{opacity:0.2;transform:translateY(0) scale(0.9)}}
    