/*
Theme Name: ClickUp Ticket Portal
Description: A focused, login-protected ClickUp ticket tracking portal.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.0
Text Domain: clickup-ticket-theme
*/

:root { --portal-ink:#172033; --portal-muted:#64748b; --portal-line:#dbe3ee; --portal-accent:#2563eb; --portal-bg:#f5f7fb; }
* { box-sizing:border-box; }
body { margin:0; background:var(--portal-bg); color:var(--portal-ink); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
.portal-shell { width:min(1080px,calc(100% - 32px)); margin:0 auto; padding:56px 0; }
.portal-brand { font-size:13px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--portal-accent); margin:0 0 12px; }
h1 { margin:0 0 15px; font-size:clamp(30px,5vw,44px); letter-spacing:-.03em; }
.portal-subtitle { color:var(--portal-muted); margin:12px 0 32px; font-size:16px; }
.portal-login { width:min(100%,420px); background:#fff; padding:32px; border:1px solid var(--portal-line); border-radius:14px; box-shadow:0 16px 45px rgba(15,23,42,.08); }
.login-username label,.login-password label { font-weight:600; display:block; margin:0 0 7px; }
.login-username input,.login-password input { width:100%; height:42px; border:1px solid #b8c3d4; border-radius:7px; padding:8px 10px; font:inherit; }
.login-remember { color:var(--portal-muted); font-size:14px; }
.login-submit input { background:var(--portal-accent); border:0; border-radius:7px; color:#fff; font:600 15px inherit; padding:11px 18px; cursor:pointer; }
.portal-signout { float:right; color:var(--portal-muted); text-decoration:none; font-size:14px; }
.portal-nav { display:flex; gap:7px; margin:0 0 22px; }.portal-nav a { border:1px solid var(--portal-line); border-radius:7px; padding:8px 12px; color:var(--portal-muted); text-decoration:none; font-weight:700; font-size:14px; background:#fff; }.portal-nav a.is-active { color:#fff; background:var(--portal-accent); border-color:var(--portal-accent); }
.new-ticket-action { margin:-8px 0 18px; }.new-ticket-action a { display:inline-flex; align-items:center; gap:7px; border-radius:7px; padding:9px 13px; background:var(--portal-accent); color:#fff; text-decoration:none; font-size:14px; font-weight:700; }.new-ticket-action a:hover { background:#1d4ed8; }
.portal-notice { margin:0 0 16px; padding:11px 14px; border-radius:8px; font-size:14px; font-weight:600; }.portal-notice-success { background:#ecfdf3; color:#166534; border:1px solid #bbf7d0; }.portal-notice-error { background:#fef2f2; color:#991b1b; border:1px solid #fecaca; }
.ticket-filter { margin:0 0 16px; position:relative; z-index:2; }.ticket-filter details { position:relative; width:max-content; }.ticket-filter summary { list-style:none; display:flex; align-items:center; gap:8px; border:1px solid var(--portal-line); border-radius:8px; background:#fff; padding:9px 12px; font-size:14px; font-weight:700; cursor:pointer; user-select:none; }.ticket-filter summary::-webkit-details-marker { display:none; }.ticket-filter summary:hover { background:#fafcff; }.filter-chevron { color:var(--portal-accent); font-size:17px; line-height:1; transition:transform .15s ease; }.ticket-filter details[open] .filter-chevron { transform:rotate(180deg); }.filter-count { display:grid; place-items:center; min-width:19px; height:19px; padding:0 5px; border-radius:999px; background:#e8efff; color:#1d4ed8; font-size:12px; }.filter-panel { position:absolute; top:calc(100% + 8px); left:0; width:240px; padding:12px; border:1px solid var(--portal-line); border-radius:10px; background:#fff; box-shadow:0 14px 30px rgba(15,23,42,.14); }.filter-panel fieldset { display:grid; gap:8px; margin:0; padding:0; border:0; }.filter-panel label { display:flex; align-items:center; gap:8px; cursor:pointer; }.filter-panel input { width:16px; height:16px; accent-color:var(--portal-accent); }.filter-actions { display:flex; justify-content:space-between; align-items:center; margin-top:14px; padding-top:12px; border-top:1px solid var(--portal-line); }.filter-actions a { color:var(--portal-muted); font-size:13px; text-decoration:none; }.filter-actions button { border:0; border-radius:6px; padding:7px 11px; background:var(--portal-accent); color:#fff; font:700 13px inherit; cursor:pointer; }
.ticket-list { display:grid; gap:12px; }
.time-report-list { display:grid; gap:12px; }.time-report-entry { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:24px; align-items:start; padding:20px; background:#fff; border:1px solid var(--portal-line); border-radius:12px; }.time-report-entry h2 { margin:0; font-size:18px; }.time-report-description { margin-top:8px; color:#475569; font-size:14px; line-height:1.55; }.time-report-description p { margin:0; }.time-report-meta { display:grid; justify-items:end; gap:4px; color:var(--portal-muted); font-size:14px; }.time-report-meta strong { color:var(--portal-accent); font-size:18px; }
.time-report-nav { display:flex; gap:7px; margin:0 0 18px; }.time-report-nav a { padding:7px 11px; border-radius:7px; color:var(--portal-muted); text-decoration:none; font-size:14px; font-weight:700; }.time-report-nav a.is-active { color:var(--portal-accent); background:#e8efff; }.time-summary-list { display:grid; gap:10px; }.time-summary-entry { display:flex; justify-content:space-between; align-items:center; padding:18px 20px; background:#fff; border:1px solid var(--portal-line); border-radius:10px; font-size:16px; }.time-summary-actions { display:flex; align-items:center; gap:20px; }.time-summary-actions a { color:var(--portal-accent); text-decoration:none; font-size:14px; font-weight:700; }.time-summary-actions a:hover { text-decoration:underline; }.time-summary-entry strong { color:var(--portal-accent); font-size:19px; }.time-period-filter { display:flex; align-items:center; gap:9px; margin:0 0 16px; }.time-period-filter label { font-size:14px; font-weight:700; }.time-period-filter select { min-width:180px; padding:8px 10px; border:1px solid var(--portal-line); border-radius:7px; background:#fff; font:inherit; }.time-period-filter button { border:0; border-radius:7px; padding:9px 12px; background:var(--portal-accent); color:#fff; font:700 14px inherit; cursor:pointer; }
.ticket { background:#fff; border:1px solid var(--portal-line); border-radius:12px; overflow:hidden; box-shadow:0 1px 2px rgba(15,23,42,.025); }
.ticket-summary { width:100%; border:0; background:#fff; color:inherit; padding:20px; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:16px; text-align:left; cursor:pointer; font:inherit; align-items:center; }.ticket-summary:hover { background:#fafcff; }.ticket-summary:focus-visible { outline:3px solid #93c5fd; outline-offset:-3px; }
.ticket-summary > span:first-child { min-width:0; text-align:left !important; }.ticket-summary h2 { margin:0 0 10px; font-size:18px; line-height:1.35; text-align:left !important; }
.ticket-meta { display:flex; flex-wrap:wrap; gap:8px 15px; font-size:14px; color:var(--portal-muted); }
.status { background:#e8efff; color:#1d4ed8; border-radius:999px; padding:4px 9px; font-size:12px; font-weight:800; letter-spacing:.045em; line-height:1; text-transform:uppercase; }
.ticket-expand { width:32px; height:32px; border:1px solid var(--portal-line); border-radius:50%; color:var(--portal-accent); display:grid; place-items:center; font-size:22px; line-height:1; transition:transform .18s ease,background .18s ease; }.ticket-summary:hover .ticket-expand { background:#eff6ff; }.ticket-summary[aria-expanded="true"] .ticket-expand { transform:rotate(45deg); }
.ticket-details { padding:0 20px 22px; border-top:1px solid var(--portal-line); }.ticket-description { color:#334155; line-height:1.65; margin:20px 0 22px; }.ticket-description > :first-child { margin-top:0; }.ticket-description > :last-child { margin-bottom:0; }
.ticket-fields { display:flex; flex-wrap:wrap; gap:14px 32px; margin:0; }.ticket-field { display:flex; align-items:baseline; gap:8px; }.ticket-field dt { color:var(--portal-ink); font-size:14px; font-weight:800 !important; }.ticket-field dd { margin:0; color:#475569; font-size:14px; }.ticket-field dd.status { display:inline-block; width:auto; }
.ticket-comments { margin-top:24px; padding-top:20px; border-top:1px solid var(--portal-line); }.ticket-comments h3 { margin:0 0 12px; font-size:15px; }.ticket-comment { padding:13px 0; border-top:1px solid #edf1f6; }.ticket-comment:first-of-type { border-top:0; }.ticket-comment-meta { display:flex; justify-content:space-between; gap:12px; color:var(--portal-muted); font-size:13px; font-weight:700; }.ticket-comment-meta time { font-weight:400; white-space:nowrap; }.ticket-comment-text { margin-top:7px; color:#334155; font-size:14px; line-height:1.55; }
.ticket-comment-form { display:grid; gap:8px; margin-top:22px; padding-top:20px; border-top:1px solid var(--portal-line); }.ticket-comment-form label { font-size:14px; font-weight:800; }.ticket-comment-form textarea { width:100%; min-height:92px; resize:vertical; border:1px solid #cbd5e1; border-radius:8px; padding:10px; color:var(--portal-ink); font:inherit; line-height:1.5; }.ticket-comment-form textarea:focus { outline:3px solid #bfdbfe; border-color:var(--portal-accent); }.ticket-comment-form button { justify-self:start; border:0; border-radius:7px; padding:9px 13px; background:var(--portal-accent); color:#fff; font:700 14px inherit; cursor:pointer; }.ticket-comment-form button:hover { background:#1d4ed8; }
.portal-empty { background:#fff; border:1px dashed #9eacc0; border-radius:12px; padding:28px; color:var(--portal-muted); }
@media(max-width:600px) { .portal-shell { width:min(100% - 24px,1080px); padding:32px 0; } .portal-login { padding:24px; } .ticket-summary { padding:16px; }.ticket-details { padding:0 16px 18px; } .time-report-entry { grid-template-columns:1fr; gap:14px; }.time-report-meta { justify-items:start; } }
