@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Ubuntu:wght@300;400;500;700&family=Ubuntu+Mono:wght@400;700&display=swap"); @import "tailwindcss"; @import "@nuxt/ui"; @theme static { --font-body: "Ubuntu", "Inter", sans-serif; --font-mono: "Ubuntu Mono", monospace; --font-display: "Inter", sans-serif; } html, body { @apply font-body bg-white text-neutral-900 dark:bg-neutral-950 dark:text-neutral-100; } /* All headers use Inter font */ h1, h2, h3, h4, h5, h6 { font-family: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } /* ========================= TEMPLATE DOCUMENT LAYOUT ========================= */ /* Template wrapper and document styling */ .template-wrapper { @apply min-h-screen relative; } .document-page { @apply max-w-full mx-auto relative p-8 border-1 border-neutral-900 dark:border-neutral-100; } /* ========================= SECTION STYLING ========================= */ .section-card { @apply border border-neutral-200 dark:border-neutral-800 rounded-lg p-5 mb-8 relative; } .section-card::before { content: ""; position: absolute; top: 4px; left: 4px; right: -4px; bottom: -4px; @apply bg-black dark:bg-white; background-image: radial-gradient(white 1px, transparent 1px); background-size: 2px 2px; z-index: -1; } html.dark .section-card::before { background-image: radial-gradient(black 1px, transparent 1px); } .section-title { @apply text-3xl font-extrabold text-neutral-900 dark:text-neutral-100 mb-4; font-family: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif; } .subsection-title { @apply text-xl font-semibold text-neutral-700 dark:text-neutral-300 mb-3 no-underline border-b border-neutral-200 dark:border-neutral-700 pb-1; font-family: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif; } /* ========================= FORM STYLING ========================= */ .form-group-large { margin-bottom: 1.5rem; width: 100%; } .form-group-large > * { width: 100%; } /* Ensure consistent alignment for all form fields */ .form-group-large :deep(textarea), .form-group-large :deep(input), .form-group-large :deep(select), .form-group-large :deep(.ui-select), .form-group-large :deep(.ui-input), .form-group-large :deep(.ui-textarea) { margin-left: 0 !important; padding-left: 0.75rem !important; } /* Additional targeting for UInput, USelect, UTextarea components */ .form-group-large :deep(.u-input), .form-group-large :deep(.u-select), .form-group-large :deep(.u-textarea), .form-group-large :deep([data-headlessui-state]), .form-group-large :deep(.relative) { margin-left: 0 !important; } .form-group-large :deep(.u-input input), .form-group-large :deep(.u-select select), .form-group-large :deep(.u-textarea textarea) { margin-left: 0 !important; padding-left: 0.75rem !important; } .form-group-large .large-field { @apply block w-full mt-2 text-lg rounded-md border-none transition-colors duration-150 ease-in-out bg-neutral-50 dark:bg-neutral-800 text-neutral-900 dark:text-neutral-100; } .form-group-large .large-field:focus { @apply bg-neutral-100 dark:bg-neutral-700 outline-2 outline-blue-500 -outline-offset-2; box-shadow: none; } .inline-field { @apply inline-block mx-1 min-w-[120px] border-none bg-neutral-50 dark:bg-neutral-800 text-neutral-900 dark:text-neutral-100 px-2 py-1 rounded; } .inline-field:focus { @apply bg-neutral-100 dark:bg-neutral-700 outline-1 outline-blue-500 -outline-offset-1; } .number-field { @apply min-w-[80px] text-center; } .wide-field { @apply min-w-[250px]; } .form-group-block .block-field { @apply block w-full mt-1 border-none bg-neutral-50 dark:bg-neutral-800 text-neutral-900 dark:text-neutral-100 p-2 rounded; } .form-group-block .block-field:focus { @apply bg-neutral-100 dark:bg-neutral-700 outline-1 outline-blue-500 -outline-offset-1; } /* ========================= CONTENT STYLING ========================= */ .content-paragraph { margin-bottom: 0.75rem; line-height: 1.6; text-align: left; } .content-list { margin: 0.5rem 0; padding-left: 1.5rem; } .content-list li { margin-bottom: 0.5rem; line-height: 1.5; display: list-item; list-style-position: outside; } .content-list.numbered { list-style-type: decimal; counter-reset: list-counter; } .content-list.numbered li { list-style-type: decimal; display: list-item; } .content-list:not(.numbered) { list-style-type: disc; } .content-list:not(.numbered) li { list-style-type: disc; display: list-item; } /* Ensure bullets are visible even with flex items */ .content-list li.flex { display: list-item; } .content-list li .flex { display: flex; width: 100%; } /* Fix flex list items to show bullets */ .content-list li[class*="flex"] { display: list-item !important; list-style-position: outside !important; } /* Ensure numbered lists show numbers even with flex */ .content-list.numbered li[class*="flex"] { list-style-type: decimal !important; } /* Ensure bullet lists show bullets even with flex */ .content-list:not(.numbered) li[class*="flex"] { list-style-type: disc !important; } /* ========================= CHECKBOX AND VALUES GRID ========================= */ .checkbox-item { @apply flex; } .checkbox-group { @apply flex flex-col space-y-3; } .values-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0.75rem; margin-top: 10px; } /* ========================= DITHERED SHADOW EFFECTS ========================= */ .dither-shadow { @apply bg-black dark:bg-neutral-400; background-image: radial-gradient(white 1px, transparent 1px); background-size: 2px 2px; } html.dark .dither-shadow { background-image: radial-gradient(black 1px, transparent 1px); } /* ========================= SELECTED ITEM PATTERN ========================= */ /* Pattern for selected items with dithered shadow and patterned background */ .item-selected { @apply relative bg-white dark:bg-neutral-950; } .item-selected::after { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-image: repeating-linear-gradient( 45deg, transparent 0px, transparent 1px, black 1px, black 2px ); opacity: 0.1; pointer-events: none; z-index: 0; } html.dark .item-selected::after { background-image: repeating-linear-gradient( 45deg, transparent 0px, transparent 1px, white 1px, white 2px ); } .item-selected > * { position: relative; z-index: 1; } /* ========================= BUTTON STYLING ========================= */ .export-btn { @apply bg-white border border-black text-black font-mono uppercase font-normal tracking-wide; padding: 0.5rem 0.75rem; font-size: 0.875rem; font-weight: 500; display: inline-flex; align-items: center; gap: 0.5rem; cursor: pointer; text-decoration: none; min-width: fit-content; } .export-btn:hover { @apply bg-black text-white -translate-x-px -translate-y-px; } .export-btn.primary { @apply bg-black text-white; } .export-btn.primary:hover { @apply bg-black -translate-x-px -translate-y-px; } .export-btn svg { flex-shrink: 0; width: 16px; height: 16px; } .export-btn.large svg { width: 20px; height: 20px; } /* Dark mode export buttons */ html.dark .export-btn { @apply bg-neutral-950 border-white text-white; } html.dark .export-btn:hover { @apply bg-white text-black; } html.dark .export-btn.primary { @apply bg-white text-black; } html.dark .export-btn.primary:hover { @apply bg-white text-black; } /* Bitmap button base styling - more targeted approach */ .bitmap-style { @apply bg-white dark:bg-neutral-950 border border-black dark:border-white text-black dark:text-white font-mono uppercase font-bold tracking-wide cursor-pointer; } .bitmap-style:hover { @apply bg-black dark:bg-white text-white dark:text-black; transform: translateY(-1px) translateX(-1px); } /* Bitmap button styling for template cards */ .bitmap-button { @apply font-mono uppercase font-bold tracking-wider relative; } .bitmap-button:hover { transform: translateY(-1px) translateX(-1px); transition: transform 0.1s ease; } .bitmap-button:hover::after { content: ""; position: absolute; top: 1px; left: 1px; right: -1px; bottom: -1px; @apply border border-black dark:border-white bg-white dark:bg-neutral-950; z-index: -1; } /* Constraint button selected styling */ .constraint-selected { @apply bg-black dark:bg-white text-white dark:text-black; } .constraint-selected:hover { @apply bg-black dark:bg-white text-white dark:text-black; } /* ========================= BITMAP AESTHETIC OVERRIDES ========================= */ /* Bitmap form field styling - applied selectively */ .bitmap-input { @apply border border-black dark:border-white bg-white dark:bg-neutral-950 text-black dark:text-white font-mono; } .bitmap-input:focus { @apply outline-2 outline-black dark:outline-white -outline-offset-2 bg-white dark:bg-neutral-950; } /* Checkbox and radio button styling for bitmap theme */ .bitmap-checkbox { @apply border-2 border-black dark:border-white bg-white dark:bg-neutral-950; } .bitmap-checkbox:checked { @apply bg-black dark:bg-white text-white dark:text-black; } /* ========================= HIDE ELEMENTS FROM PRINT ========================= */ .no-print, .no-pdf { display: block; } /* ========================= PRINT STYLES ========================= */ @media print { .no-print, .no-pdf { display: none !important; } .template-wrapper { background: white !important; padding: 0 !important; min-height: auto !important; } .document-page { max-width: none !important; width: 100% !important; margin: 0 !important; box-shadow: none !important; border-radius: 0 !important; padding: 0 !important; } .document-page::before { content: ""; display: block; height: 0.5in; } .section-title { font-size: 14pt; page-break-after: avoid; } .section-card { break-inside: avoid; margin-bottom: 1rem; padding: 0.5rem; border: 1px solid #ccc; box-shadow: none; } .checkbox-item { font-size: 10pt; margin: 2pt 0; } .inline-field, .large-field, .block-field { background: none !important; border: none !important; border-bottom: 1pt solid #000 !important; padding: 2pt !important; } .signature-space { border: 1px solid #000; background: none; min-height: 3rem; padding: 1rem; } } /* ========================= VALIDATION STYLES ========================= */ .validation-error { @apply text-red-500 dark:text-red-400 text-sm font-medium mt-2 flex items-center gap-1; } /* ========================= TEMPLATE CARD STYLES ========================= */ .template-card { @apply relative font-mono; } .help-section { @apply relative; } .coming-soon { @apply opacity-70; } .dither-tag { @apply relative bg-white dark:bg-neutral-950; } .dither-tag::before { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-image: repeating-linear-gradient( 45deg, transparent 0px, transparent 1px, black 1px, black 2px ); opacity: 0.1; pointer-events: none; } html.dark .dither-tag::before { background-image: repeating-linear-gradient( 45deg, transparent 0px, transparent 1px, white 1px, white 2px ); } .disabled-button { @apply opacity-60 cursor-not-allowed; } /* ========================= ANIMATIONS ========================= */ @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .animate-fadeIn { animation: fadeIn 0.5s ease-out; } /* ========================= MOBILE RESPONSIVENESS ========================= */ @media (max-width: 768px) { .template-wrapper { padding: 1rem; } .values-grid { grid-template-columns: 1fr; } .export-content { flex-direction: column; align-items: stretch; gap: 1rem; } /* Make principle cards full width on mobile */ .principle-grid { grid-template-columns: 1fr; } /* Stack constraint buttons vertically on mobile */ .constraint-buttons { flex-direction: column; align-items: stretch; } .constraint-buttons button { width: 100%; justify-content: center; } }