:root{--bg: #0B1120;--bg-soft: #1E293B;--bg-soft-2: #334155;--fg: #F1F5F9;--fg-muted: #94A3B8;--primary: #8B5CF6;--primary-soft: #7C3AED;--primary-dim: rgba(139, 92, 246, .18);--danger: #EF4444;--danger-soft: #DC2626;--border: rgba(148, 163, 184, .18);--radius: 18px;--radius-sm: 12px;--shadow-sm: 0 4px 12px rgba(0, 0, 0, .25);--shadow: 0 14px 38px rgba(0, 0, 0, .45);--ease: cubic-bezier(.2, .7, .2, 1);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;background:radial-gradient(1200px 800px at 80% -10%,rgba(139,92,246,.18),transparent 60%),radial-gradient(800px 600px at -10% 110%,rgba(37,99,235,.14),transparent 60%),var(--bg);background-attachment:fixed;color:var(--fg);-webkit-tap-highlight-color:transparent;overscroll-behavior:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button{font:inherit;color:inherit;cursor:pointer}.app{min-height:100%;display:flex;flex-direction:column;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.app-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,#8b5cf629,#0f172a99);position:sticky;top:0;z-index:5;backdrop-filter:blur(10px) saturate(140%);-webkit-backdrop-filter:blur(10px) saturate(140%)}.head-left{display:flex;align-items:center;gap:6px;min-width:0}.head-actions{display:flex;gap:8px;flex-shrink:0}.app-head h1{font-size:19px;margin:0;display:flex;align-items:center;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.logo{font-size:24px}.app-main{padding:20px 18px 28px;flex:1}.center{text-align:center;justify-content:center}.muted{color:var(--fg-muted);font-size:13px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px}.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}@media (min-width: 720px){.grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:18px}}.tile-wrap{position:relative}.tile{width:100%;aspect-ratio:1 / 1;border:none;border-radius:var(--radius);padding:16px 14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:#fff;text-align:center;position:relative;overflow:hidden;box-shadow:var(--shadow);transition:transform .15s var(--ease),filter .15s var(--ease),box-shadow .2s var(--ease)}.tile:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(140% 80% at 50% 0%,rgba(255,255,255,.22),transparent 60%),radial-gradient(120% 80% at 50% 100%,rgba(0,0,0,.25),transparent 50%);pointer-events:none}.tile:active{transform:scale(.96)}.tile:hover{filter:brightness(1.06);box-shadow:0 18px 42px #00000080}.tile-playing{outline:3px solid rgba(255,255,255,.55);outline-offset:-3px}.tile-playing:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:var(--radius);border:2px solid rgba(255,255,255,.4);animation:ring 1.4s ease-out infinite;pointer-events:none}@keyframes ring{0%{transform:scale(.96);opacity:.7}to{transform:scale(1.06);opacity:0}}.tile-emoji{font-size:44px;line-height:1;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.tile-label{font-weight:700;font-size:16px;line-height:1.2;word-break:break-word;max-width:100%;text-shadow:0 1px 2px rgba(0,0,0,.25)}.tile-meta{font-size:11px;opacity:.92;text-transform:uppercase;letter-spacing:.06em;font-weight:600}.tile-badge{position:absolute;top:8px;left:8px;background:#0006;color:#fff;font-size:10px;font-weight:700;padding:3px 7px;border-radius:999px;letter-spacing:.04em;z-index:1}.tile-progress{position:absolute;left:0;bottom:0;height:4px;width:100%;background:#ffffffd9;transform-origin:0 50%;transform:scaleX(0);transition:transform .08s linear;z-index:1}.folder-tile .tile-emoji{font-size:56px}.video-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000f5;z-index:100;display:none;align-items:center;justify-content:center;padding:24px}.video-overlay.show{display:flex}.video-overlay-el{width:100%;max-width:900px;max-height:80vh;background:#000;border-radius:var(--radius-sm);box-shadow:var(--shadow)}.video-close{position:absolute;top:16px;right:16px;width:44px;height:44px;border-radius:50%;background:#ffffff26;color:#fff;border:none;font-size:20px}.tile-menu-wrap{position:absolute;top:6px;right:6px}.tile-menu-btn{width:30px;height:30px;border-radius:50%;border:none;background:#0006;color:#fff;font-size:18px;line-height:1;z-index:2}.tile-menu{position:absolute;top:36px;right:0;background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius-sm);display:flex;flex-direction:column;min-width:170px;z-index:10;box-shadow:var(--shadow);overflow:hidden}.tile-menu button{border:none;background:transparent;color:var(--fg);text-align:left;padding:11px 14px;font-size:14px}.tile-menu button:hover{background:var(--bg-soft-2)}.tile-menu button.danger{color:#fca5a5}.add-tile{background:#ffffff05;border:2px dashed rgba(148,163,184,.35);color:var(--fg-muted);box-shadow:none}.add-tile:before{display:none}.add-tile:hover{border-color:var(--primary);color:var(--fg);background:#8b5cf614;filter:none}.add-tile .tile-emoji{font-size:36px}.empty{text-align:center;padding:60px 24px;max-width:500px;margin:0 auto}.empty-emoji{font-size:64px;margin-bottom:12px}.empty h2{margin:8px 0}.empty p{color:var(--fg-muted);line-height:1.55}.btn{border:none;border-radius:var(--radius-sm);padding:10px 16px;font-weight:600;font-size:14px;background:var(--bg-soft-2);color:var(--fg);transition:filter .15s var(--ease),transform .1s var(--ease),background .15s var(--ease)}.btn:hover{filter:brightness(1.1)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.primary{background:linear-gradient(180deg,var(--primary),var(--primary-soft));color:#fff;box-shadow:0 4px 12px #7c3aed66}.btn.danger{background:linear-gradient(180deg,var(--danger),var(--danger-soft));color:#fff;box-shadow:0 4px 12px #dc262659}.btn.ghost{background:transparent;border:1px solid var(--border)}.btn.ghost:hover{background:#ffffff0a}.btn.big{padding:14px 22px;font-size:16px}.icon-btn{border:none;background:transparent;color:var(--fg);font-size:22px;width:40px;height:40px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center}.icon-btn:hover{background:var(--bg-soft-2)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#080c18b3;z-index:50;display:flex;align-items:flex-end;justify-content:center;padding:0;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:fade .18s var(--ease)}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@media (min-width: 640px){.modal-backdrop{align-items:center;padding:24px}}.modal{background:var(--bg-soft);border-radius:22px 22px 0 0;width:100%;max-width:580px;max-height:92vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--border);animation:slideUp .25s var(--ease)}@media (min-width: 640px){.modal{border-radius:22px}}.modal-wide{max-width:720px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border)}.modal-head h2{margin:0;font-size:17px;font-weight:700}.modal-body{padding:18px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:16px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:12px 18px;border-top:1px solid var(--border);background:#00000026}.field{display:flex;flex-direction:column;gap:6px}.field>span{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-muted)}.field input[type=text],.field select{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:11px 12px;color:var(--fg);font-size:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.field select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'><path d='M1 1l5 5 5-5' stroke='%2394A3B8' stroke-width='1.5' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px}.field input[type=text]:focus,.field select:focus{outline:2px solid var(--primary);outline-offset:1px}.field input[type=file]{color:var(--fg-muted);font-size:14px}.emoji-row,.color-row{display:flex;flex-wrap:wrap;gap:6px;max-height:180px;overflow-y:auto;padding:4px;margin:-4px;scrollbar-width:thin}.emoji-row::-webkit-scrollbar,.color-row::-webkit-scrollbar{width:6px}.emoji-row::-webkit-scrollbar-thumb,.color-row::-webkit-scrollbar-thumb{background:var(--bg-soft-2);border-radius:3px}.emoji-chip{background:var(--bg);border:1px solid var(--border);border-radius:50%;width:40px;height:40px;font-size:20px;display:inline-flex;align-items:center;justify-content:center;transition:transform .1s var(--ease)}.emoji-chip:hover{transform:scale(1.08)}.emoji-chip.active{border-color:var(--primary);background:var(--primary-dim);box-shadow:0 0 0 2px var(--primary)}.color-chip{width:32px;height:32px;border-radius:50%;border:2px solid transparent;transition:transform .1s var(--ease)}.color-chip:hover{transform:scale(1.1)}.color-chip.active{border-color:#fff;box-shadow:0 0 0 2px var(--primary)}.seg{display:flex;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;padding:3px;gap:3px}.seg.seg-wrap{flex-wrap:wrap}.seg button{flex:1;border:none;background:transparent;color:var(--fg);padding:8px 10px;font-size:14px;font-weight:600;border-radius:8px;min-width:56px;transition:background .12s var(--ease),color .12s var(--ease)}.seg button:hover{background:#ffffff0a}.seg button.active{background:linear-gradient(180deg,var(--primary),var(--primary-soft));color:#fff;box-shadow:0 2px 6px #7c3aed66}.seg button:disabled{opacity:.4}.panel{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px;display:flex;flex-direction:column;gap:12px}.preview-video{width:100%;max-height:280px;background:#000;border-radius:var(--radius-sm)}.playback{display:flex;flex-direction:column;gap:6px}.playback audio{width:100%}.rec-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.pulse{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--danger);box-shadow:0 0 #ef4444b3;animation:pulse 1.2s ease-out infinite}@keyframes pulse{0%{box-shadow:0 0 #ef4444b3}70%{box-shadow:0 0 0 14px #ef444400}to{box-shadow:0 0 #ef444400}}.error{background:#ef444426;border:1px solid rgba(239,68,68,.4);color:#fca5a5;padding:10px 12px;border-radius:var(--radius-sm);font-size:14px}.toast{background:#22c55e2e;border:1px solid rgba(34,197,94,.45);color:#86efac;padding:10px 14px;border-radius:var(--radius-sm);font-size:14px;text-align:center;font-weight:600;animation:fade .2s var(--ease)}.toast-fixed{position:fixed;bottom:max(20px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:200;background:var(--bg-soft);color:var(--fg);border:1px solid var(--border);box-shadow:var(--shadow);max-width:90vw;white-space:nowrap}.player-stage{display:flex;flex-direction:column;gap:8px;align-items:center}.player-stage audio{width:100%}.practice-body{gap:20px}.practice-section{display:flex;flex-direction:column;gap:10px;padding:14px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm)}.practice-section h3{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-muted)}.practice-section audio{width:100%}.takes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.take-row{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;display:flex;flex-direction:column;gap:8px}.take-meta{display:flex;justify-content:space-between;align-items:center;font-size:13px}.take-row audio{width:100%}.link-btn{background:transparent;border:none;color:var(--primary);font-size:13px;font-weight:600;padding:4px 6px;align-self:flex-end}.link-btn.danger{color:#fca5a5}@media (max-width: 480px){.head-actions .btn{padding:8px 12px;font-size:13px}.app-head h1{font-size:17px}.app-main{padding:16px 14px 24px}}
