2026-01-10 20:39:17 +01:00
|
|
|
/**
|
|
|
|
|
* Page Layout - Content Area Structure
|
|
|
|
|
*
|
|
|
|
|
* Page container, headers, cards og grid layouts
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/* ===========================================
|
|
|
|
|
PAGE CONTAINER
|
|
|
|
|
=========================================== */
|
|
|
|
|
swp-page-container {
|
|
|
|
|
display: block;
|
|
|
|
|
max-width: var(--page-max-width);
|
|
|
|
|
margin: 0 auto;
|
2026-01-17 15:36:15 +01:00
|
|
|
padding-left: var(--page-padding);
|
|
|
|
|
padding-right: var(--page-padding);
|
2026-01-10 20:39:17 +01:00
|
|
|
}
|
|
|
|
|
|
2026-01-12 22:10:57 +01:00
|
|
|
/* ===========================================
|
|
|
|
|
STICKY HEADER (Generic - use for all tabbed pages)
|
|
|
|
|
=========================================== */
|
|
|
|
|
swp-sticky-header {
|
|
|
|
|
display: block;
|
|
|
|
|
position: sticky;
|
|
|
|
|
top: 0;
|
|
|
|
|
z-index: var(--z-sticky);
|
|
|
|
|
background: var(--color-surface);
|
|
|
|
|
overflow: visible;
|
|
|
|
|
/* INGEN padding eller border - det er på swp-header-content */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Override tab-bar sticky when inside sticky header */
|
|
|
|
|
swp-sticky-header swp-tab-bar {
|
|
|
|
|
position: static;
|
|
|
|
|
top: auto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Header content wrapper - HAR padding + border */
|
|
|
|
|
swp-header-content {
|
|
|
|
|
display: block;
|
|
|
|
|
background: var(--color-surface);
|
|
|
|
|
border-bottom: 1px solid var(--color-border);
|
|
|
|
|
padding: var(--spacing-10) var(--spacing-12);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-header-content swp-page-header {
|
|
|
|
|
padding: 0;
|
|
|
|
|
margin-bottom: 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-header-content swp-stats-row {
|
|
|
|
|
margin-bottom: 0;
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-10 20:39:17 +01:00
|
|
|
/* ===========================================
|
|
|
|
|
PAGE HEADER
|
|
|
|
|
=========================================== */
|
|
|
|
|
swp-page-header {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: flex-start;
|
|
|
|
|
justify-content: space-between;
|
2026-01-12 15:42:18 +01:00
|
|
|
margin-bottom: var(--section-gap);
|
2026-01-10 20:39:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-page-title h1 {
|
2026-01-11 01:30:32 +01:00
|
|
|
font-size: var(--font-size-2xl);
|
|
|
|
|
font-weight: var(--font-weight-semibold);
|
2026-01-10 20:39:17 +01:00
|
|
|
color: var(--color-text);
|
|
|
|
|
margin-bottom: var(--spacing-1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-page-title p {
|
|
|
|
|
font-size: var(--font-size-base);
|
|
|
|
|
color: var(--color-text-secondary);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-page-actions {
|
|
|
|
|
display: flex;
|
|
|
|
|
gap: var(--spacing-2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ===========================================
|
2026-01-13 00:09:46 +01:00
|
|
|
CARD CONTENT GRIDS (Page-specific)
|
|
|
|
|
Base card styles in components.css
|
2026-01-10 20:39:17 +01:00
|
|
|
=========================================== */
|
2026-01-11 18:18:36 +01:00
|
|
|
/* Card content with grid lists - auto-detect via :has() */
|
|
|
|
|
swp-card-content:has(> swp-booking-list),
|
|
|
|
|
swp-card-content:has(> swp-notification-list),
|
|
|
|
|
swp-card-content:has(> swp-attention-list) {
|
|
|
|
|
display: grid;
|
2026-01-12 15:42:18 +01:00
|
|
|
gap: var(--spacing-5);
|
2026-01-11 18:18:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-card-content:has(> swp-booking-list) {
|
|
|
|
|
grid-template-columns: 50px 4px 1fr auto auto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-card-content:has(> swp-notification-list) {
|
|
|
|
|
grid-template-columns: 50px 1fr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-card-content:has(> swp-attention-list) {
|
|
|
|
|
grid-template-columns: 50px 1fr auto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Generic list item title & description */
|
|
|
|
|
swp-item-title {
|
|
|
|
|
display: block;
|
|
|
|
|
font-size: var(--font-size-md);
|
|
|
|
|
font-weight: var(--font-weight-semibold);
|
|
|
|
|
color: var(--color-text);
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-item-desc {
|
|
|
|
|
display: block;
|
|
|
|
|
font-size: var(--font-size-xs);
|
|
|
|
|
color: var(--color-text-secondary);
|
2026-01-10 20:39:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ===========================================
|
|
|
|
|
DASHBOARD GRID
|
|
|
|
|
=========================================== */
|
|
|
|
|
swp-dashboard-grid {
|
|
|
|
|
display: grid;
|
2026-01-11 13:11:55 +01:00
|
|
|
grid-template-columns: 1fr 380px;
|
2026-01-12 15:42:18 +01:00
|
|
|
gap: var(--card-gap);
|
2026-01-10 20:39:17 +01:00
|
|
|
}
|
|
|
|
|
|
2026-01-11 18:18:36 +01:00
|
|
|
swp-main-column,
|
2026-01-10 20:39:17 +01:00
|
|
|
swp-side-column {
|
2026-01-11 18:18:36 +01:00
|
|
|
display: grid;
|
2026-01-12 15:42:18 +01:00
|
|
|
gap: var(--card-gap);
|
2026-01-11 18:18:36 +01:00
|
|
|
align-content: start;
|
2026-01-10 20:39:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ===========================================
|
|
|
|
|
AI INSIGHT
|
|
|
|
|
=========================================== */
|
|
|
|
|
swp-ai-insight {
|
|
|
|
|
display: block;
|
2026-01-12 15:42:18 +01:00
|
|
|
padding: var(--card-padding);
|
2026-01-10 20:39:17 +01:00
|
|
|
background: linear-gradient(135deg,
|
2026-01-14 00:47:06 +01:00
|
|
|
var(--bg-purple-medium),
|
|
|
|
|
var(--bg-teal-medium)
|
2026-01-10 20:39:17 +01:00
|
|
|
);
|
|
|
|
|
border-radius: var(--border-radius);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-ai-header {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
gap: var(--spacing-2);
|
|
|
|
|
margin-bottom: var(--spacing-2);
|
|
|
|
|
font-size: var(--font-size-sm);
|
2026-01-11 01:30:32 +01:00
|
|
|
font-weight: var(--font-weight-medium);
|
2026-01-10 20:39:17 +01:00
|
|
|
color: var(--color-purple);
|
2026-01-14 00:47:06 +01:00
|
|
|
|
|
|
|
|
& i {
|
|
|
|
|
font-size: var(--font-size-base);
|
|
|
|
|
}
|
2026-01-10 20:39:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-ai-text {
|
|
|
|
|
font-size: var(--font-size-base);
|
|
|
|
|
color: var(--color-text);
|
|
|
|
|
line-height: var(--line-height-relaxed);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ===========================================
|
|
|
|
|
QUICK ACTIONS
|
|
|
|
|
=========================================== */
|
|
|
|
|
swp-quick-actions {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
2026-01-12 15:42:18 +01:00
|
|
|
gap: var(--spacing-3);
|
2026-01-10 20:39:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-quick-action-btn {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
2026-01-12 15:42:18 +01:00
|
|
|
gap: var(--spacing-3);
|
|
|
|
|
padding: var(--card-padding);
|
2026-01-10 20:39:17 +01:00
|
|
|
font-size: var(--font-size-base);
|
|
|
|
|
font-family: var(--font-family);
|
|
|
|
|
color: var(--color-text);
|
|
|
|
|
background: var(--color-background);
|
|
|
|
|
border: 1px solid var(--color-border);
|
|
|
|
|
border-radius: var(--border-radius);
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
transition: all var(--transition-fast);
|
2026-01-14 00:47:06 +01:00
|
|
|
|
|
|
|
|
& i {
|
|
|
|
|
font-size: var(--font-size-lg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
|
background: var(--color-background-hover);
|
|
|
|
|
border-color: var(--color-teal);
|
|
|
|
|
color: var(--color-teal);
|
|
|
|
|
}
|
2026-01-10 20:39:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ===========================================
|
|
|
|
|
RESPONSIVE
|
|
|
|
|
=========================================== */
|
|
|
|
|
@media (max-width: 1200px) {
|
|
|
|
|
swp-dashboard-grid {
|
|
|
|
|
grid-template-columns: 1fr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-side-column {
|
|
|
|
|
order: -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@media (max-width: 768px) {
|
|
|
|
|
swp-page-container {
|
2026-01-12 15:42:18 +01:00
|
|
|
padding: var(--spacing-5);
|
2026-01-10 20:39:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-page-header {
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
gap: var(--spacing-4);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
swp-page-actions {
|
|
|
|
|
width: 100%;
|
|
|
|
|
}
|
|
|
|
|
}
|