/* Shared layout for both panels. Each shell sets the colour and type
   variables below from its own brand file; nothing here names a colour. */
* { box-sizing: border-box; }
body { margin: 0; font-family: var(--p-body); color: var(--p-text); background: var(--p-background); line-height: 1.5; }
a { color: var(--p-text); text-decoration-color: var(--p-accent); text-decoration-thickness: 2px; }
.shell { display: grid; grid-template-columns: 240px 1fr; min-height: 100vh; }
.side { padding: 24px 20px; background: var(--p-side-background); color: var(--p-side-text); }
.side a { color: inherit; text-decoration: none; display: block; padding: 8px 10px; border-radius: 6px; }
.side a.current, .side a:hover { background: var(--p-side-highlight); }
.side .brand { display: block; margin-bottom: 24px; padding: 0; }
.side .brand img { max-width: 170px; display: block; }
.side .brand .name { display: block; font-family: var(--p-display); font-size: 26px; line-height: 1.1; }
.side .brand .sub { display: block; margin-top: 4px; font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--p-accent); }
.main { padding: 32px 40px; max-width: 1100px; }
h1 { font-family: var(--p-display); font-weight: 600; font-size: 34px; margin: 0 0 6px; }
h2 { font-family: var(--p-display); font-weight: 600; font-size: 22px; margin: 28px 0 10px; }
.lede { margin: 0 0 24px; color: var(--p-text-soft); }
.banner { background: var(--p-accent); color: var(--p-text); padding: 10px 14px; border-radius: 6px; margin-bottom: 20px; font-weight: 600; }
.tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; }
.tile, .card, .panel { background: var(--p-surface); border: 1px solid var(--p-line); border-radius: 10px; padding: 16px 18px; }
.tile .n { font-size: 30px; font-weight: 700; }
.tile .l { color: var(--p-text-soft); font-size: 14px; }
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.card h3 { margin: 0 0 4px; font-size: 18px; }
.card .addr { color: var(--p-text-soft); font-size: 14px; word-break: break-all; }
table { width: 100%; border-collapse: collapse; background: var(--p-surface); border: 1px solid var(--p-line); border-radius: 10px; overflow: hidden; }
th, td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--p-line); font-size: 14px; }
th { background: var(--p-muted); font-weight: 600; }
tr:last-child td { border-bottom: 0; }
.pill { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; background: var(--p-muted); }
.pill.live { background: #DCEFDD; } .pill.draft { background: var(--p-muted); } .pill.past_due { background: #FBE3DF; } .pill.deactivated { background: #E4E4E8; color: #4A5468; }
.button { display: inline-block; padding: 10px 16px; border-radius: 8px; background: var(--p-accent); color: var(--p-text); font-weight: 600; text-decoration: none; border: 0; font: inherit; cursor: pointer; }
.button:focus-visible, a:focus-visible, input:focus-visible { outline: 3px solid var(--p-text); outline-offset: 2px; }
input[type=email] { font: inherit; padding: 10px 12px; border: 1px solid var(--p-line); border-radius: 8px; width: 100%; max-width: 380px; }
form.inline { display: inline; }
.signin { max-width: 440px; margin: 10vh auto; padding: 0 16px; }
.small { font-size: 13px; color: var(--p-text-soft); }
ul.activity { list-style: none; padding: 0; margin: 0; }
ul.activity li { padding: 8px 0; border-bottom: 1px solid var(--p-line); font-size: 14px; }
@media (max-width: 720px) { .shell { grid-template-columns: 1fr; } .main { padding: 20px 16px; } .side { padding: 16px; } }
.side .signout { display: block; width: 100%; text-align: left; background: transparent; color: inherit; padding: 8px 10px; font-weight: 400; font-size: 13px; word-break: break-all; border-top: 1px solid var(--p-side-highlight); border-radius: 0; margin-top: 8px; }
.side .signout:hover { background: var(--p-side-highlight); }

/* Something moving while a job runs: a ring that turns; a dot that pulses for anyone who asked for less motion. */
.spinner { display: inline-block; width: 18px; height: 18px; border-radius: 50%; border: 3px solid var(--p-muted); border-top-color: var(--p-accent); animation: mq-spin 0.9s linear infinite; flex: none; }
@keyframes mq-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .spinner { animation: mq-pulse 1.6s ease-in-out infinite; background: var(--p-accent); border: 0; width: 10px; height: 10px; } @keyframes mq-pulse { 0%, 100% { opacity: .3; } 50% { opacity: 1; } } }
