/* Kapteins Daagbox App styling */ body { background: radial-gradient(circle at center, #1b264f 0%, #0b0c10 100%); min-height: 100vh; margin: 0; display: flex; justify-content: center; align-items: center; font-family: system-ui, -apple-system, sans-serif; } /* Glassmorphism Auth Card */ .auth-card { background: rgba(11, 12, 16, 0.75); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgba(212, 175, 55, 0.25); border-radius: 20px; padding: 40px; width: 450px; max-width: 90%; box-shadow: 0 20px 50px rgba(0, 0, 0, 0.6), inset 0 0 0 1px rgba(255, 255, 255, 0.05); display: flex; flex-direction: column; align-items: center; box-sizing: border-box; animation: fadeIn 0.4s ease-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: translateY(0); } } .auth-brand { text-align: center; margin-bottom: 30px; width: 100%; } .auth-logo-img { width: 100px; height: 100px; object-fit: contain; filter: drop-shadow(0 4px 12px rgba(212, 175, 55, 0.35)); margin-bottom: 15px; } .auth-brand h1 { font-size: 32px; font-weight: 700; color: #f8fafc; background: linear-gradient(135deg, #fef08a 0%, #d97706 100%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; margin: 0 0 8px 0; letter-spacing: -0.5px; } .auth-brand .tagline { font-size: 14.5px; color: #94a3b8; margin: 0; line-height: 140%; } .auth-form { width: 100%; display: flex; flex-direction: column; gap: 20px; } .input-group { position: relative; width: 100%; } .input-text { width: 100%; background: rgba(11, 12, 16, 0.85); border: 1px solid rgba(148, 163, 184, 0.25); border-radius: 10px; padding: 14px 16px; font-size: 16px; color: #f1f5f9; outline: none; box-sizing: border-box; transition: all 0.3s ease; } .input-text:focus { border-color: #d97706; box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.2); background: #0b0c10; } .input-textarea { width: 100%; background: rgba(11, 12, 16, 0.85); border: 1px solid rgba(148, 163, 184, 0.25); border-radius: 10px; padding: 14px; font-size: 15px; color: #f1f5f9; outline: none; box-sizing: border-box; resize: none; font-family: inherit; transition: all 0.3s ease; } .input-textarea:focus { border-color: #d97706; box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.2); background: #0b0c10; } .auth-submit-actions { display: flex; flex-direction: column; gap: 12px; width: 100%; } /* Premium buttons */ .btn { width: 100%; padding: 14px; font-size: 16px; font-weight: 600; border: none; border-radius: 10px; cursor: pointer; transition: all 0.25s ease; display: flex; justify-content: center; align-items: center; gap: 8px; } .btn.primary { background: linear-gradient(135deg, #fbbf24 0%, #d97706 100%); color: #0b0c10; box-shadow: 0 4px 15px rgba(217, 119, 6, 0.3); } .btn.primary:hover:not(:disabled) { transform: translateY(-1.5px); box-shadow: 0 6px 20px rgba(217, 119, 6, 0.45); } .btn.primary:active:not(:disabled) { transform: translateY(0.5px); } .btn.secondary { background: rgba(255, 255, 255, 0.05); color: #e2e8f0; border: 1px solid rgba(255, 255, 255, 0.12); } .btn.secondary:hover:not(:disabled) { background: rgba(255, 255, 255, 0.08); color: #ffffff; } .btn:disabled { opacity: 0.4; cursor: not-allowed; transform: none !important; box-shadow: none !important; } /* Recovery screen formatting */ .auth-header { display: flex; flex-direction: column; align-items: center; margin-bottom: 20px; } .auth-icon { margin-bottom: 12px; } .auth-icon.warn { color: #f59e0b; } .auth-icon.accent { color: #d97706; } .auth-card h2 { font-size: 24px; font-weight: 600; color: #f8fafc; margin: 0; } .recovery-warning { font-size: 13.5px; color: #f43f5e; background: rgba(244, 63, 94, 0.08); border: 1px solid rgba(244, 63, 94, 0.2); border-radius: 8px; padding: 12px 14px; line-height: 145%; margin-bottom: 25px; text-align: left; } .phrase-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; width: 100%; margin-bottom: 30px; } .phrase-word { background: rgba(11, 12, 16, 0.9); border: 1px solid rgba(255, 255, 255, 0.06); border-radius: 6px; padding: 12px 8px; font-size: 14.5px; color: #f1f5f9; text-align: center; font-family: ui-monospace, monospace; } .word-num { color: #d97706; font-size: 11px; margin-right: 4px; } .auth-actions { display: flex; gap: 12px; width: 100%; } .auth-error { width: 100%; background: rgba(244, 63, 94, 0.08); color: #fda4af; border-left: 3px solid #f43f5e; padding: 10px 12px; font-size: 14px; border-radius: 4px; text-align: left; box-sizing: border-box; } .auth-footer { margin-top: 30px; width: 100%; border-top: 1px solid rgba(255, 255, 255, 0.06); padding-top: 20px; display: flex; justify-content: space-between; box-sizing: border-box; } .btn-icon-text { background: none; border: none; color: #94a3b8; font-size: 13.5px; display: flex; align-items: center; gap: 6px; cursor: pointer; padding: 6px 10px; border-radius: 6px; transition: all 0.2s ease; text-decoration: none; } .btn-icon-text:hover { color: #d97706; background: rgba(217, 119, 6, 0.06); } .btn-icon-text.link-sec { color: #4b5563; } .btn-icon-text.link-sec:hover { color: #9ca3af; } /* Dashboard Mock Layout (for verified state) */ .dashboard-mock { color: #f8fafc; background: rgba(11, 12, 16, 0.75); backdrop-filter: blur(20px); border: 1px solid rgba(212, 175, 55, 0.25); border-radius: 20px; padding: 40px; text-align: center; max-width: 600px; width: 90%; box-sizing: border-box; animation: fadeIn 0.4s ease-out; } .dashboard-mock h2 { font-size: 28px; color: #fbbf24; margin-top: 0; } .dashboard-mock p { color: #94a3b8; line-height: 150%; margin-bottom: 24px; } /* Dashboard Layout and Styles */ .dashboard-container { width: 100%; max-width: 1200px; min-height: 100vh; display: flex; flex-direction: column; padding: 24px; box-sizing: border-box; color: #f1f5f9; } .dashboard-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 32px; padding-bottom: 16px; border-bottom: 1px solid rgba(212, 175, 55, 0.15); } .header-brand { display: flex; align-items: center; gap: 12px; } .header-logo { color: #fbbf24; filter: drop-shadow(0 0 8px rgba(251, 191, 36, 0.4)); } .header-brand h1 { font-size: 24px; font-weight: 700; margin: 0; background: linear-gradient(135deg, #fef08a 0%, #d97706 100%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; } .header-brand .subtitle { font-size: 12px; color: #94a3b8; margin: 2px 0 0 0; } .header-actions { display: flex; align-items: center; gap: 16px; } .conn-status { display: flex; align-items: center; gap: 6px; font-size: 13px; padding: 6px 12px; border-radius: 20px; font-weight: 500; } .conn-status.online { background: rgba(34, 197, 94, 0.1); color: #4ade80; border: 1px solid rgba(34, 197, 94, 0.2); } .conn-status.offline { background: rgba(239, 68, 68, 0.1); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.2); } .skipper-badge { display: flex; align-items: center; gap: 6px; font-size: 13px; padding: 6px 12px; border-radius: 20px; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); color: #e2e8f0; } .btn-icon { background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); color: #94a3b8; width: 36px; height: 36px; border-radius: 50%; display: flex; justify-content: center; align-items: center; cursor: pointer; transition: all 0.2s ease; } .btn-icon:hover { background: rgba(217, 119, 6, 0.1); border-color: #d97706; color: #fbbf24; } .btn-icon.logout:hover { background: rgba(239, 68, 68, 0.1); border-color: #ef4444; color: #f87171; } .dashboard-main { display: grid; grid-template-columns: 350px 1fr; gap: 32px; align-items: start; } @media (max-width: 900px) { .dashboard-main { grid-template-columns: 1fr; padding: 0 10px; } } .create-section { background: rgba(11, 12, 16, 0.6); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgba(212, 175, 55, 0.2); border-radius: 16px; padding: 24px; box-sizing: border-box; } .create-section h2 { font-size: 18px; margin-top: 0; margin-bottom: 20px; color: #f8fafc; } .dashboard-form { display: flex; flex-direction: column; gap: 16px; } .mt-4 { margin-top: 16px; } .list-section { display: flex; flex-direction: column; gap: 20px; } .section-title-bar { display: flex; justify-content: space-between; align-items: center; } .section-title-bar h2 { font-size: 20px; margin: 0; color: #f8fafc; } .btn-refresh { background: none; border: none; color: #94a3b8; cursor: pointer; padding: 6px; border-radius: 4px; display: flex; align-items: center; justify-content: center; transition: all 0.2s; } .btn-refresh:hover { color: #fbbf24; } .spin { animation: rotation 1s infinite linear; } @keyframes rotation { from { transform: rotate(0deg); } to { transform: rotate(359deg); } } .dashboard-status-msg { padding: 40px; text-align: center; color: #94a3b8; border-radius: 16px; background: rgba(255, 255, 255, 0.02); border: 1px dashed rgba(255, 255, 255, 0.08); } .logbooks-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; } .logbook-card { background: rgba(11, 12, 16, 0.6); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 12px; padding: 20px; display: flex; align-items: center; gap: 16px; cursor: pointer; position: relative; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .logbook-card:hover { transform: translateY(-2px); border-color: rgba(212, 175, 55, 0.4); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3); background: rgba(11, 12, 16, 0.75); } .card-icon { background: rgba(217, 119, 6, 0.1); color: #fbbf24; width: 48px; height: 48px; border-radius: 10px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; border: 1px solid rgba(217, 119, 6, 0.2); } .card-info { flex-grow: 1; min-width: 0; } .card-info h3 { margin: 0; font-size: 16px; font-weight: 600; color: #f1f5f9; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .card-meta { display: flex; align-items: center; gap: 10px; margin-top: 6px; font-size: 11px; } .sync-badge { padding: 2px 6px; border-radius: 4px; font-weight: 500; } .sync-badge.synced { background: rgba(34, 197, 94, 0.1); color: #86efac; } .sync-badge.local { background: rgba(234, 179, 8, 0.1); color: #fde047; } .date-badge { color: #64748b; } .btn-delete { background: none; border: none; color: #475569; cursor: pointer; padding: 6px; border-radius: 6px; display: flex; align-items: center; justify-content: center; opacity: 0; transition: all 0.2s ease; position: absolute; top: 12px; right: 12px; } .logbook-card:hover .btn-delete { opacity: 1; } .btn-delete:hover { color: #f43f5e; background: rgba(244, 63, 94, 0.1); } /* Active Logbook App Layout */ .app-layout { width: 100%; max-width: 1200px; min-height: 100vh; display: flex; flex-direction: column; padding: 24px; box-sizing: border-box; color: #f1f5f9; } .app-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; padding-bottom: 16px; border-bottom: 1px solid rgba(212, 175, 55, 0.15); } .app-header-left { display: flex; align-items: center; gap: 16px; } .btn-back { background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); color: #fbbf24; padding: 8px 16px; border-radius: 8px; display: flex; align-items: center; gap: 6px; cursor: pointer; font-weight: 500; transition: all 0.2s; } .btn-back:hover { background: rgba(217, 119, 6, 0.1); border-color: #d97706; } .app-title-area h2 { font-size: 20px; margin: 0; color: #f8fafc; } .app-title-area .app-subtitle { font-size: 12px; color: #94a3b8; margin: 2px 0 0 0; } .app-body { display: grid; grid-template-columns: 240px 1fr; gap: 24px; align-items: start; } @media (max-width: 768px) { .app-body { grid-template-columns: 1fr; } } .app-sidebar { display: flex; flex-direction: column; gap: 8px; background: rgba(11, 12, 16, 0.6); backdrop-filter: blur(20px); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 12px; padding: 16px; box-sizing: border-box; } .sidebar-btn { background: none; border: none; color: #94a3b8; padding: 12px 16px; border-radius: 8px; display: flex; align-items: center; gap: 12px; cursor: pointer; text-align: left; font-weight: 500; transition: all 0.2s; width: 100%; box-sizing: border-box; } .sidebar-btn:hover { background: rgba(255, 255, 255, 0.04); color: #f1f5f9; } .sidebar-btn.active { background: rgba(217, 119, 6, 0.1); border: 1px solid rgba(217, 119, 6, 0.2); color: #fbbf24; } .app-content { background: rgba(11, 12, 16, 0.6); backdrop-filter: blur(20px); border: 1px solid rgba(212, 175, 55, 0.2); border-radius: 16px; padding: 32px; min-height: 400px; box-sizing: border-box; animation: fadeIn 0.3s ease-out; } .tab-placeholder { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 300px; text-align: center; color: #94a3b8; } .tab-placeholder h3 { font-size: 24px; color: #fbbf24; margin-top: 16px; margin-bottom: 8px; } .tab-placeholder p { max-width: 400px; line-height: 150%; margin: 0; } /* Form and Editor layout structures */ .form-card { background: rgba(11, 12, 16, 0.6); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgba(212, 175, 55, 0.2); border-radius: 16px; padding: 32px; box-sizing: border-box; width: 100%; } .form-header { display: flex; align-items: center; gap: 12px; margin-bottom: 24px; } .form-header h2 { font-size: 20px; margin: 0; color: #fbbf24; } .form-icon { color: #fbbf24; } .vessel-form { display: flex; flex-direction: column; gap: 24px; } .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } @media (max-width: 600px) { .form-grid { grid-template-columns: 1fr; } } .vessel-form label { display: block; font-size: 13.5px; color: #94a3b8; margin-bottom: 6px; font-weight: 500; } .form-actions { display: flex; justify-content: flex-end; align-items: center; gap: 16px; margin-top: 12px; } .success-toast { display: flex; align-items: center; gap: 8px; color: #4ade80; background: rgba(34, 197, 94, 0.1); border: 1px solid rgba(34, 197, 94, 0.2); padding: 8px 16px; border-radius: 8px; font-size: 14px; font-weight: 500; } /* Crew Dashboard Layout */ .crew-dashboard-layout { display: flex; flex-direction: column; gap: 24px; width: 100%; } .member-editor-card { background: rgba(255, 255, 255, 0.02); border: 1px solid rgba(212, 175, 55, 0.15); border-radius: 12px; padding: 24px; box-sizing: border-box; } .editor-header { display: flex; justify-content: space-between; align-items: center; } .editor-header h3 { margin: 0; font-size: 16px; color: #fbbf24; } .editor-actions { display: flex; justify-content: flex-end; } .crew-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; } .crew-member-card { background: rgba(255, 255, 255, 0.02); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 12px; padding: 20px; display: flex; flex-direction: column; position: relative; } .crew-card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; border-bottom: 1px solid rgba(255, 255, 255, 0.06); padding-bottom: 8px; } .crew-card-header h4 { margin: 0; font-size: 16px; font-weight: 600; color: #f1f5f9; } .card-actions { display: flex; gap: 8px; } .crew-card-body { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: #94a3b8; } .crew-card-body p { margin: 0; line-height: 140%; } .crew-card-body strong { color: #cbd5e1; } /* Deviation Table Layout */ .deviation-grid-container { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 12px; width: 100%; } @media (max-width: 480px) { .deviation-grid-container { grid-template-columns: 1fr 1fr; } } .deviation-cell { background: rgba(255, 255, 255, 0.02); border: 1px solid rgba(255, 255, 255, 0.06); border-radius: 8px; padding: 10px; display: flex; flex-direction: column; align-items: center; gap: 8px; } .cell-label { font-size: 12px; font-weight: 600; color: #fbbf24; font-family: ui-monospace, monospace; } .cell-input { text-align: center; padding: 6px 8px; font-size: 14px; }