/* ============================================================ CreateMyTreeButton — Pill + Panel morph, bas-droite Même langage visuel que la ContextualNavbar ============================================================ */ /* ---------------------------------------------------------- Pill bouton (état fermé) — même aesthetic que la navbar ---------------------------------------------------------- */ .cmt-pill { position: fixed; bottom: 100px; right: 20px; z-index: 1001; display: flex; align-items: center; padding: 13px 22px; border: 1px solid rgba(42, 38, 34, 0.1); border-radius: 50px; background: rgba(242, 239, 234, 0.97); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); box-shadow: 0 4px 40px rgba(42, 38, 34, 0.22), 0 1px 6px rgba(42, 38, 34, 0.1); font-family: 'DM Sans', system-ui, sans-serif; font-size: 14px; font-weight: 500; color: #2A2622; cursor: pointer; white-space: nowrap; animation: cmtPillIn 0.5s cubic-bezier(0.22, 1, 0.36, 1); transition: box-shadow 0.2s ease, transform 0.2s ease, background 0.2s ease; } @keyframes cmtPillIn { from { opacity: 0; transform: translateY(12px) scale(0.9); } to { opacity: 1; transform: translateY(0) scale(1); } } .cmt-pill:hover { background: rgba(242, 239, 234, 1); box-shadow: 0 8px 48px rgba(42, 38, 34, 0.28), 0 2px 8px rgba(42, 38, 34, 0.12); transform: translateY(-2px); } .cmt-pill:active { transform: translateY(0) scale(0.97); } /* ---------------------------------------------------------- Panel (état ouvert) — card qui morphe depuis la pill ---------------------------------------------------------- */ .cmt-panel { position: fixed; bottom: 100px; right: 20px; z-index: 1001; width: 300px; background: rgba(255, 255, 255, 0.97); backdrop-filter: blur(28px); -webkit-backdrop-filter: blur(28px); border-radius: 20px; border: 1px solid rgba(147, 64, 42, 0.18); box-shadow: 0 12px 48px rgba(42, 38, 34, 0.22), 0 2px 10px rgba(42, 38, 34, 0.1); transform-origin: bottom right; animation: cmtMorphIn 0.38s cubic-bezier(0.22, 1, 0.36, 1); overflow: hidden; } @keyframes cmtMorphIn { 0% { opacity: 0; transform: scale(0.55) translateY(8px); border-radius: 50px; } 60% { border-radius: 22px; } 100% { opacity: 1; transform: scale(1) translateY(0); border-radius: 20px; } } /* Header */ .cmt-panel-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px 12px; border-bottom: 1px solid rgba(147, 64, 42, 0.1); } .cmt-panel-title { font-family: 'DM Sans', system-ui, sans-serif; font-size: 13px; font-weight: 600; color: #2A2622; line-height: 1.3; } .cmt-panel-close { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border: none; border-radius: 50%; background: rgba(42, 38, 34, 0.07); color: #6B645D; font-size: 12px; cursor: pointer; flex-shrink: 0; transition: background 0.15s, color 0.15s; } .cmt-panel-close:hover { background: rgba(42, 38, 34, 0.13); color: #2A2622; } /* Body */ .cmt-panel-body { padding: 16px 18px 18px; } .cmt-label { display: block; font-family: 'DM Sans', system-ui, sans-serif; font-size: 12px; color: #6B645D; margin-bottom: 7px; letter-spacing: 0.02em; } .cmt-input { width: 100%; box-sizing: border-box; border-radius: 12px; border: 1px solid rgba(147, 64, 42, 0.25); background: rgba(255, 255, 255, 0.9); color: #2a2622; padding: 10px 13px; font-family: 'DM Sans', system-ui, sans-serif; font-size: 14px; outline: none; transition: border-color 0.15s, box-shadow 0.15s; } .cmt-input:focus { border-color: #d2694a; box-shadow: 0 0 0 3px rgba(210, 105, 74, 0.12); } .cmt-slug-preview { margin-top: 8px; font-family: 'DM Sans', system-ui, sans-serif; font-size: 11px; color: #93402A; } .cmt-slug-preview code { background: rgba(147, 64, 42, 0.1); border-radius: 4px; padding: 1px 5px; color: #2a2622; } .cmt-error { margin-top: 8px; background: rgba(171, 49, 49, 0.08); border: 1px solid rgba(171, 49, 49, 0.25); color: #862f2f; border-radius: 10px; padding: 9px 12px; font-family: 'DM Sans', system-ui, sans-serif; font-size: 12px; } .cmt-btn-create { margin-top: 14px; width: 100%; padding: 11px 16px; border-radius: 12px; border: none; background: #2a2622; color: #ffffff; font-family: 'DM Sans', system-ui, sans-serif; font-size: 14px; font-weight: 500; cursor: pointer; transition: background 0.15s, box-shadow 0.15s, transform 0.15s; } .cmt-btn-create:hover:not(:disabled) { background: linear-gradient(135deg, #93402a, #2a2622); box-shadow: 0 4px 14px rgba(147, 64, 42, 0.32); transform: translateY(-1px); } .cmt-btn-create:active:not(:disabled) { transform: translateY(0); } .cmt-btn-create:disabled { opacity: 0.5; cursor: not-allowed; } /* ---------------------------------------------------------- Mobile — bottom sheet ---------------------------------------------------------- */ @media (max-width: 768px) { .cmt-pill { bottom: 84px; right: 12px; font-size: 13px; padding: 11px 18px; } .cmt-panel { bottom: 0; right: 0; left: 0; width: 100%; border-radius: 20px 20px 0 0; transform-origin: bottom center; } @keyframes cmtMorphIn { from { opacity: 0; transform: translateY(100%); } to { opacity: 1; transform: translateY(0); } } .cmt-panel-body { padding: 16px 20px 32px; } }