/* ===== Sistema de tema (Hefestia: grafito + acento ámbar) ===== */ :root, [data-theme="dark"] { --page-bg: #0a0f17; --header-bg: #1f2937; --toolbar-bg: #131a26; --col-bg: #141b27; --col-border: #243044; --inset: #0c121c; --chip-bg: #111827; --border: #374151; --divider: #2a3852; --btn-bg: #1f2937; --seg-bg: #0c121c; --text-strong: #ffffff; --text: #f3f4f6; --text-muted: #9ca3af; --text-meta: #6b7280; --pos-text: #86efac; --accent-text: #fbbf24; --danger-text: #fca5a5; --card-bg: #1f2937; --card-border: #374151; --input-bg: #111827; --accent: #d97706; --accent-2: #b45309; --accent-tint: rgba(245, 158, 11, 0.12); --ok: #22a957; --danger: #f0617a; --postit: 200px; /* tamaño fijo del post-it (simula uno real) */ /* aliases para el CSS existente */ --bg: var(--page-bg); --panel: var(--col-bg); --panel2: var(--btn-bg); --muted: var(--text-muted); } [data-theme="light"] { --page-bg: #eceff3; --header-bg: #ffffff; --toolbar-bg: #f5f7fa; --col-bg: #ffffff; --col-border: #e4e8ef; --inset: #eef1f5; --chip-bg: #eef1f5; --border: #dbe1ea; --divider: #dfe5ee; --btn-bg: #f1f4f8; --seg-bg: #e7ebf1; --text-strong: #0b1220; --text: #1c2533; --text-muted: #5b6677; --text-meta: #8b94a3; --pos-text: #15803d; --accent-text: #b45309; --danger-text: #dc2626; --card-bg: #ffffff; --card-border: #e4e8ef; --input-bg: #f5f7fa; --accent: #d97706; --accent-2: #b45309; --accent-tint: rgba(245, 158, 11, 0.14); --ok: #15803d; --danger: #dc2626; } * { box-sizing: border-box; } html { background: var(--page-bg); } body { margin: 0; background: var(--page-bg); color: var(--text); font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; -webkit-font-smoothing: antialiased; } ::selection { background: rgba(245, 158, 11, 0.3); } button, .btn { cursor: pointer; border: 1px solid var(--border); background: var(--btn-bg); color: var(--text); border-radius: 8px; padding: 7px 12px; font-size: 14px; text-decoration: none; display: inline-block; font-family: inherit; } button:hover { border-color: var(--accent); } button:disabled { opacity: 0.4; cursor: not-allowed; } button.primary, .primary { background: var(--accent); border-color: var(--accent); color: #fff; box-shadow: 0 4px 14px rgba(217, 119, 6, 0.32); } button.primary:hover, .primary:hover { background: var(--accent-2); border-color: var(--accent-2); } input, textarea, select { background: var(--input-bg); border: 1px solid var(--border); color: var(--text); border-radius: 9px; padding: 9px 11px; font-size: 14px; font-family: inherit; width: 100%; } input:focus, textarea:focus, select:focus { outline: none; border-color: var(--accent); } input[type="checkbox"], input[type="radio"] { width: auto; } textarea { resize: vertical; min-height: 44px; } /* ===== Barra superior / marca ===== */ .appbar { display: flex; align-items: center; gap: 12px; padding: 13px 24px; background: var(--header-bg); border-bottom: 1px solid var(--border); position: sticky; top: 0; z-index: 20; } .brand { display: inline-flex; align-items: center; gap: 10px; } .brand-logo { width: 30px; height: 30px; border-radius: 8px; background: linear-gradient(135deg, #f59e0b, #b45309); display: flex; align-items: center; justify-content: center; color: #1a0a00; font-weight: 800; font-size: 15px; flex-shrink: 0; } .brand-name { font-size: 17px; font-weight: 700; color: var(--text-strong); letter-spacing: -0.01em; } .appbar-right { margin-left: auto; display: flex; align-items: center; gap: 10px; } .seg { display: inline-flex; background: var(--seg-bg); border: 1px solid var(--border); border-radius: 9px; padding: 2px; } .seg button { border: none; border-radius: 7px; height: 28px; padding: 0 11px; font-size: 12px; font-weight: 700; cursor: pointer; background: transparent; color: var(--text-muted); } .seg button.on { background: #fbbf24; color: #1a0a00; } .seg button:hover { border: none; } /* ===== Home ===== */ .home-wrap { max-width: 1080px; margin: 0 auto; padding: 40px 28px 96px; } .hero-grid { display: grid; grid-template-columns: 1fr 440px; gap: 44px; align-items: center; } @media (max-width: 880px) { .hero-grid { grid-template-columns: 1fr; } } .hero-brand { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; } .hero-brand .brand-logo { width: 44px; height: 44px; border-radius: 12px; font-size: 22px; box-shadow: 0 6px 18px rgba(245,158,11,0.32); } .hero-brand .brand-name { font-size: 30px; font-weight: 800; letter-spacing: -0.02em; } .hero p.lead { margin: 0 0 26px; font-size: 16px; line-height: 1.55; color: var(--text-muted); max-width: 380px; } .feature { display: flex; gap: 11px; align-items: center; font-size: 14px; color: var(--text); margin-bottom: 13px; } .feature .ic { width: 26px; height: 26px; border-radius: 7px; background: var(--inset); display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .create-card { background: var(--card-bg); border: 1px solid var(--card-border); border-radius: 16px; padding: 24px; box-shadow: 0 14px 40px rgba(0,0,0,0.18); } .create-card h2 { margin: 0 0 20px; font-size: 18px; font-weight: 700; color: var(--text-strong); } .field-label { display: block; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-muted); font-weight: 600; margin: 0 0 7px; } .create-card input, .create-card select { margin-bottom: 18px; } .stepper { display: flex; align-items: center; border: 1px solid var(--border); border-radius: 9px; overflow: hidden; background: var(--input-bg); } .stepper button { border: none; background: transparent; color: var(--text-muted); padding: 9px 14px; font-size: 16px; } .stepper .val { flex: 1; text-align: center; font-family: ui-monospace, monospace; font-size: 15px; color: var(--text-strong); font-weight: 600; } .cta { width: 100%; border: none; background: var(--accent); color: #fff; border-radius: 10px; padding: 13px; font-size: 15px; font-weight: 600; cursor: pointer; box-shadow: 0 4px 14px rgba(217,119,6,0.32); } .cta:hover { background: var(--accent-2); } .muted-note { margin: 14px 0 0; text-align: center; font-size: 12px; color: var(--text-meta); } .section-num { font-family: ui-monospace, monospace; font-size: 13px; color: #f59e0b; font-weight: 600; } /* chips de autodestrucción */ .ttl-row { display: flex; gap: 7px; flex-wrap: wrap; } .chip { padding: 7px 13px; border: 1px solid var(--border); border-radius: 9999px; font-size: 13px; color: var(--text); background: var(--input-bg); cursor: pointer; } .chip.on { border: 1.5px solid #f59e0b; color: var(--text-strong); background: var(--accent-tint); } /* columnas personalizadas (creación libre) */ .col-rows { display: flex; flex-direction: column; gap: 8px; margin-bottom: 10px; } .col-row { display: flex; align-items: center; gap: 8px; background: var(--input-bg); border: 1px solid var(--border); border-radius: 9px; padding: 5px 6px 5px 10px; } .col-row input { margin: 0; border: none; background: transparent; padding: 4px 0; } .col-row .col-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; } .col-row .del { border: none; background: transparent; color: var(--text-meta); padding: 6px 9px; } .add-col { width: 100%; border: 1.5px dashed var(--border); background: transparent; color: var(--text-muted); border-radius: 9px; padding: 11px; font-size: 13px; font-weight: 600; } /* ===== layout general ===== */ .tagline { color: var(--text-muted); } .lang { display: inline-flex; gap: 4px; } .card { background: var(--card-bg); border: 1px solid var(--card-border); border-radius: 14px; padding: 22px; box-shadow: 0 14px 40px rgba(0,0,0,0.18); } .form { display: flex; flex-direction: column; gap: 4px; } .form label { color: var(--text-muted); font-size: 13px; margin-top: 8px; } .form .primary, .form .cta { margin-top: 16px; } .centered { display: grid; place-items: center; min-height: 80vh; padding: 24px; } .centered .card { width: min(440px, 100%); } .err { color: var(--danger); font-size: 13px; } /* pantallas de estado (no encontrado / autodestruido) */ .state-card { text-align: center; max-width: 420px; } .state-icon { width: 60px; height: 60px; border-radius: 16px; background: var(--inset); display: flex; align-items: center; justify-content: center; font-size: 28px; margin: 0 auto 18px; } .state-icon.danger { background: rgba(220,38,38,0.12); border: 1px solid rgba(220,38,38,0.25); } .state-card h2 { margin: 0 0 8px; font-size: 19px; font-weight: 700; color: var(--text-strong); } .state-card p { margin: 0 0 22px; font-size: 14px; line-height: 1.5; color: var(--text-muted); } /* enroll / unirse */ .enroll-kicker { font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-meta); font-weight: 600; margin-bottom: 6px; } .enroll-title { margin: 0 0 12px; font-size: 24px; font-weight: 800; letter-spacing: -0.01em; color: var(--text-strong); } .enroll-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 22px; } .enroll-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--text-muted); background: var(--inset); border: 1px solid var(--border); border-radius: 9999px; padding: 4px 11px; } .enroll-chip.danger { color: var(--danger-text); } .enroll-chip .mono { font-family: ui-monospace, monospace; } /* ===== Board ===== */ .board { padding-bottom: 48px; } .topbar { display: flex; align-items: center; gap: 12px; padding: 13px 24px; background: var(--header-bg); border-bottom: 1px solid var(--border); position: sticky; top: 0; z-index: 10; } .topbar h1 { font-size: 17px; margin: 0; color: var(--text-strong); font-weight: 700; } .topbar-right { margin-left: auto; display: flex; align-items: center; gap: 10px; } .toolbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 12px 24px; border-bottom: 1px solid var(--border); } .votes-left { color: var(--text-muted); font-size: 13px; } .expiry { color: var(--danger-text); font-size: 13px; margin-left: auto; font-family: ui-monospace, monospace; } .badge { background: var(--accent-tint); color: var(--accent-text); border: 1px solid rgba(245,158,11,0.4); border-radius: 7px; padding: 2px 8px; font-size: 12px; font-weight: 600; } .timer { display: inline-flex; align-items: center; gap: 6px; } .timer .clock { font-variant-numeric: tabular-nums; font-family: ui-monospace, monospace; font-weight: 600; min-width: 52px; text-align: center; color: var(--text-strong); } .timer .clock.up { color: var(--danger); animation: blink 1s steps(2, start) infinite; } .timer-input { width: 64px; text-align: center; padding: 4px 6px; } @keyframes blink { to { opacity: 0.35; } } .columns { display: flex; gap: 18px; padding: 20px 24px 32px; overflow-x: auto; align-items: start; min-height: 60vh; } .column { background: var(--col-bg); border: 1px solid var(--col-border); border-radius: 14px; padding: 16px; min-width: 444px; flex: 1; display: flex; flex-direction: column; } .col-head { display: flex; align-items: center; gap: 9px; margin-bottom: 14px; } .col-head h3 { margin: 0; font-size: 16px; font-weight: 700; color: var(--text-strong); } .col-count { font-family: ui-monospace, monospace; font-size: 11px; color: var(--text-muted); background: var(--inset); border-radius: 9999px; padding: 2px 9px; margin-left: auto; } .add-note { display: flex; gap: 6px; margin-bottom: 12px; } .add-note button { white-space: nowrap; } /* área pública: post-its de tamaño FIJO, varios por fila (se ajustan al ancho) */ .public-area { display: grid; grid-template-columns: repeat(auto-fill, var(--postit)); gap: 10px; align-content: start; justify-content: center; min-height: 80px; border-radius: 8px; padding: 2px; } .public-area.over { background: var(--accent-tint); } .no-cards { grid-column: 1 / -1; color: var(--text-meta); text-align: center; font-size: 13px; padding: 24px 0; } /* post-it cuadrado de tamaño fijo */ .note.postit { background: #ffe08a; color: #20242c; border: none; border-radius: 12px; padding: 12px 12px 9px; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.35); width: var(--postit); height: var(--postit); display: flex; flex-direction: column; gap: 6px; overflow: hidden; position: relative; } .note.postit .note-handle { color: rgba(0, 0, 0, 0.42); } /* texto: tamaño dinámico vía inline style; si no cabe (suelo 12px) aparece scroll */ .note-edit, .note.postit p { flex: 1; overflow: auto; margin: 0; background: transparent; border: none; color: inherit; padding: 0; width: 100%; resize: none; line-height: 1.3; font-weight: 500; word-break: break-word; white-space: pre-wrap; } .note-edit:focus { outline: none; } .note-foot { display: flex; align-items: center; gap: 6px; margin-top: 0; } .avatar { width: 19px; height: 19px; border-radius: 50%; background: rgba(0, 0, 0, 0.14); display: flex; align-items: center; justify-content: center; font-size: 8px; font-weight: 700; color: rgba(0, 0, 0, 0.6); flex-shrink: 0; } .author { color: rgba(0, 0, 0, 0.5); font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .note .note-foot button { background: rgba(0, 0, 0, 0.06); border: 1px solid rgba(0, 0, 0, 0.18); color: #20242c; padding: 3px 9px; font-size: 11px; font-weight: 700; border-radius: 9999px; } .vote-control { display: inline-flex; align-items: center; gap: 3px; } .note .vote-minus { padding: 2px 7px; } .note .vote.voted { border-color: #16a34a; color: #137a36; background: rgba(34, 163, 74, 0.18); } .note .make-private { padding: 3px 7px; } .note .del { color: #b4232f; } .note .publish { background: rgba(22, 163, 74, 0.9); border: none; color: #fff; } /* notas dentro de grupo y cuadrícula privada (post-its fijos) */ .group-grid, .private-grid { display: grid; grid-template-columns: repeat(auto-fill, var(--postit)); gap: 8px; justify-content: start; } .private-grid { margin-bottom: 10px; } .group .note.postit { box-shadow: 0 3px 8px rgba(0, 0, 0, 0.3); } .note.postit.draft { outline: 2px dashed rgba(168, 85, 247, 0.55); outline-offset: 2px; } /* compositor privado */ .private-section { border-top: 1px dashed var(--divider); margin-top: 14px; padding-top: 14px; } .private-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; } .private-head span { font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--pos-text); font-weight: 600; } .link { background: none; border: none; color: var(--accent-text); padding: 0; font-weight: 600; cursor: pointer; font-size: 12px; } .swatches { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 10px; } .swatch { width: 21px; height: 21px; border-radius: 7px; cursor: pointer; } .swatch.on { box-shadow: 0 0 0 2px var(--col-bg), 0 0 0 4px #f59e0b; } .postit-input { color: rgba(20, 24, 28, 0.85); border: none; border-radius: 9px; padding: 13px; min-height: 54px; box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25); resize: vertical; } .postit-input::placeholder { color: rgba(0, 0, 0, 0.45); } /* drag & drop */ .note.dragging, .group.dragging { opacity: 0.4; } .note-handle { position: absolute; top: 4px; right: 5px; cursor: grab; font-size: 13px; line-height: 1; user-select: none; touch-action: none; z-index: 1; } .note-handle:active { cursor: grabbing; } .group-handle { touch-action: none; } .note.group-target { outline: 2px solid var(--ok); outline-offset: 1px; } /* grupos (fila completa) */ .group { grid-column: 1 / -1; background: var(--inset); border: 1px solid var(--divider); border-radius: 12px; padding: 10px; } .group.over { outline: 2px dashed var(--accent); } .group-head { display: flex; align-items: center; gap: 8px; margin-bottom: 9px; padding: 0 2px; } .group-head input { flex: 1; background: transparent; border: none; font-weight: 700; padding: 4px 6px; color: var(--text-strong); font-size: 13px; } .group-head input:focus { background: var(--input-bg); } .group-handle { cursor: grab; color: var(--text-muted); padding: 0 4px; } .group-count { font-family: ui-monospace, monospace; font-size: 11px; color: var(--text-muted); background: var(--btn-bg); border-radius: 9999px; padding: 1px 7px; } .group-head .vote { background: rgba(34, 197, 94, 0.16) !important; border: 1px solid #16a34a !important; color: var(--pos-text) !important; } .vote.hiddenTotals { font-variant-numeric: tabular-nums; } .reveal-on { border-color: var(--ok); color: var(--pos-text); } .overlay-note { color: #20242c; border: 1px solid var(--accent); border-radius: 10px; padding: 11px; width: 150px; aspect-ratio: 1/1; box-shadow: 0 8px 24px rgba(0,0,0,0.4); overflow: hidden; font-size: 12.5px; } /* modales y drawers */ .modal-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,0.5); display: grid; place-items: center; z-index: 50; } .modal { width: min(420px, 92vw); } .modal .row { display: flex; gap: 8px; align-items: center; justify-content: space-between; margin: 10px 0; } .modal .row label { color: var(--text-muted); } .modal-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 16px; } .toggle { display: inline-flex; align-items: center; gap: 6px; } .drawer-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,0.4); z-index: 50; } .drawer { position: absolute; top: 0; right: 0; height: 100%; width: min(440px, 92vw); background: var(--card-bg); border-left: 1px solid var(--border); display: flex; flex-direction: column; box-shadow: -8px 0 24px rgba(0,0,0,0.4); } .drawer-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--border); } .drawer-head h2 { margin: 0; font-size: 18px; color: var(--text-strong); } .drawer-body { padding: 16px 20px; overflow-y: auto; } .icon { background: none; border: none; color: var(--text-muted); font-size: 16px; padding: 4px 8px; } .panel-section { font-size: 14px; color: var(--text-muted); margin: 18px 0 8px; } .toggle-row { display: flex; align-items: center; gap: 8px; padding: 8px 0; } .people, .action-list { list-style: none; padding: 0; margin: 0; } .people li { padding: 8px 0; border-bottom: 1px solid var(--divider); } .me { display: inline-flex; align-items: center; gap: 6px; } .me em { color: var(--text-muted); } .add-action { display: flex; gap: 8px; margin-bottom: 8px; } .add-action input { flex: 1; } .action-row { display: flex; align-items: center; gap: 8px; padding: 6px 0; } .action-row .action-text { flex: 1; } .action-row .owner { max-width: 120px; } .action-list.done .action-row .action-text { text-decoration: line-through; color: var(--text-muted); } .menu-backdrop { position: fixed; inset: 0; z-index: 50; } .options-menu { position: absolute; top: 150px; left: 24px; background: var(--card-bg); border: 1px solid var(--border); border-radius: 10px; padding: 6px; min-width: 240px; box-shadow: 0 12px 32px rgba(0,0,0,0.5); display: flex; flex-direction: column; } .options-menu .menu-section { font-size: 12px; color: var(--text-muted); padding: 8px 10px 4px; } .options-menu .menu-section.danger { color: var(--danger-text); } .options-menu button { text-align: left; background: none; border: none; padding: 8px 10px; border-radius: 6px; } .options-menu button:hover { background: var(--btn-bg); } .options-menu button.danger { color: var(--danger-text); } .export-modal { width: min(820px, 94vw); } .export-grid { display: grid; grid-template-columns: 240px 1fr; gap: 16px; margin-top: 8px; } .export-preview textarea { width: 100%; min-height: 340px; font-family: ui-monospace, monospace; font-size: 13px; } .pill { background: var(--inset); color: var(--text-muted); border-radius: 9999px; padding: 1px 7px; font-size: 11px; font-family: ui-monospace, monospace; margin-left: 2px; } .pill.amber { background: #fbbf24; color: #1a0a00; } .locked-banner { color: var(--danger-text); font-size: 13px; font-weight: 600; } /* ===== cabecera del tablero ===== */ .timer-wrap { margin: 0 auto; } .topbar .expiry { margin: 0; color: var(--danger-text); font-size: 12px; font-family: ui-monospace, monospace; background: var(--inset); border: 1px solid var(--border); border-radius: 9999px; padding: 4px 10px; display: inline-flex; align-items: center; gap: 5px; } .votes-pill { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text); background: var(--chip-bg); border: 1px solid var(--border); border-radius: 9999px; padding: 6px 13px; white-space: nowrap; } .votes-pill b { color: var(--pos-text); font-family: ui-monospace, monospace; } .share-btn { background: var(--accent) !important; color: #fff !important; border: none !important; box-shadow: 0 3px 10px rgba(217,119,6,0.3); font-weight: 600; } /* ===== barra de herramientas ===== */ .toolbar { background: var(--toolbar-bg, var(--col-bg)); } .phase-tabs { display: inline-flex; background: var(--seg-bg); border: 1px solid var(--border); border-radius: 9px; padding: 3px; } .phase-tabs button { border: none; background: transparent; color: var(--text-muted); border-radius: 6px; padding: 7px 14px; font-size: 12.5px; font-weight: 500; } .phase-tabs button.on { background: #fbbf24; color: #1a0a00; font-weight: 600; } .phase-tabs button:disabled { cursor: default; } .phase-tabs button:hover { border: none; } .tb-divider { width: 1px; height: 24px; background: var(--border); } .tb-btn { background: transparent; } .tb-votes { background: var(--btn-bg); color: var(--pos-text); border: 1px solid var(--border); } .tb-votes.on { border-color: var(--ok); background: rgba(34,197,94,0.12); } .tb-hint { margin-left: auto; font-size: 12px; color: var(--text-meta); white-space: nowrap; } /* ===== menú de columna ===== */ .col-head input { font-size: 16px; font-weight: 700; padding: 6px 8px; } .col-menu-wrap { position: relative; display: inline-flex; } .col-menu-btn { border: none; background: transparent; color: var(--text-muted); font-size: 18px; line-height: 1; padding: 0 4px; } .col-menu { position: absolute; right: 0; top: 26px; z-index: 60; background: var(--card-bg); border: 1px solid var(--border); border-radius: 10px; padding: 6px; min-width: 170px; box-shadow: 0 12px 32px rgba(0,0,0,0.5); display: flex; flex-direction: column; } .col-menu button { text-align: left; background: none; border: none; padding: 8px 10px; border-radius: 6px; font-size: 13px; } .col-menu button:hover { background: var(--btn-bg); } .col-menu button.danger { color: var(--danger-text); } .col-menu button:disabled { opacity: 0.4; } /* ===== añadir columna ===== */ .add-column { align-self: start; min-width: 180px; min-height: 200px; background: transparent; border: 2px dashed var(--col-border); border-radius: 14px; color: var(--text-muted); font-size: 14px; font-weight: 600; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 24px 14px; } .add-column:hover { border-color: var(--accent); color: var(--text); } .add-column-plus { width: 38px; height: 38px; border-radius: 11px; background: var(--inset); display: flex; align-items: center; justify-content: center; font-size: 22px; line-height: 1; }