Quality gates
Spot passing and failing projects immediately.
diff --git a/public/css/sonardesk-original.css b/public/css/sonardesk-original.css new file mode 100644 index 0000000..ee3957c --- /dev/null +++ b/public/css/sonardesk-original.css @@ -0,0 +1,304 @@ + + :root{ + color-scheme:light; + --bg:#f7f9fc;--surface:#fff;--surface-soft:#f8fafc;--text:#172033;--muted:#667085; + --line:#e4e7ec;--line-strong:#d0d5dd;--blue:#2563eb;--blue-dark:#1d4ed8;--blue-soft:#eff6ff; + --green:#067647;--green-soft:#ecfdf3;--red:#b42318;--red-soft:#fef3f2;--nav:#0b1220; + --shadow-sm:0 1px 3px rgba(16,24,40,.06);--shadow-md:0 14px 36px rgba(15,23,42,.08); + } + *{box-sizing:border-box} + html{scroll-behavior:smooth} + body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",sans-serif;margin:0;background:var(--bg);color:var(--text);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased} + a{color:inherit} + img{max-width:100%;display:block} + button,input{font:inherit} + :focus-visible{outline:3px solid rgba(37,99,235,.28);outline-offset:3px} + + .site-header{position:sticky;top:0;z-index:50;background:rgba(11,18,32,.94);backdrop-filter:saturate(180%) blur(18px);border-bottom:1px solid rgba(255,255,255,.08)} + .nav-shell{max-width:1220px;margin:0 auto;min-height:68px;padding:0 24px;display:flex;align-items:center;gap:28px} + .brand{display:inline-flex;align-items:center;gap:10px;color:#fff;text-decoration:none;font-weight:800;letter-spacing:-.01em;white-space:nowrap} + .brand img{width:34px;height:34px;border-radius:9px;box-shadow:0 5px 14px rgba(37,99,235,.25)} + .nav-links{display:flex;align-items:center;gap:22px} + .nav-links a{color:#cbd5e1;text-decoration:none;font-weight:650;font-size:14px;transition:color .16s ease} + .nav-links a:hover{color:#fff}.nav-alert-count{display:inline-flex;min-width:18px;height:18px;align-items:center;justify-content:center;margin-left:5px;padding:0 5px;border-radius:99px;background:#ef4444;color:#fff;font-size:10px;font-weight:900;vertical-align:1px} + .nav-account{margin-left:auto;display:flex;align-items:center;gap:12px;min-width:0} + .nav-email{color:#cbd5e1;font-size:13px;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} + .nav-auth-link{color:#e2e8f0;text-decoration:none;font-weight:650;font-size:14px} + .nav-cta{display:inline-flex;align-items:center;justify-content:center;padding:9px 13px;border-radius:9px;background:#fff;color:#0f172a!important;text-decoration:none!important;font-weight:800!important} + .nav-signout{background:transparent;border:1px solid rgba(255,255,255,.18);color:#e2e8f0;padding:8px 11px;border-radius:9px;font-weight:700;cursor:pointer} + .nav-signout:hover{background:rgba(255,255,255,.08)} + + .wrap{max-width:1120px;margin:0 auto;padding:42px 24px 72px;min-height:calc(100vh - 220px)} + .wrap-wide{max-width:1220px} + .hero-card{padding:28px 0 18px} + .hero-card h1,.portal-header h1,.licence-detail-head h1{font-size:38px;line-height:1.08;margin:7px 0 10px;letter-spacing:-.035em} + .eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:850;color:var(--blue)} + .lead{font-size:17px;line-height:1.62;max-width:720px;color:#475467}.lead.compact{margin:0} + + .btn,button{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:10px;padding:10px 15px;background:var(--blue);color:#fff;text-decoration:none;cursor:pointer;font:inherit;font-weight:750;line-height:1.2;transition:transform .15s ease,background .15s ease,box-shadow .15s ease} + .btn:hover,button:hover{background:var(--blue-dark)} + .btn-primary{box-shadow:0 7px 18px rgba(37,99,235,.22)} + .btn-primary:hover{transform:translateY(-1px);box-shadow:0 9px 22px rgba(37,99,235,.28)} + .btn-secondary,button.btn-secondary{background:#fff;color:#344054;border:1px solid #d0d5dd;box-shadow:none} + .btn-secondary:hover,button.btn-secondary:hover{background:#f9fafb} + .btn-dark{background:#111827}.btn-dark:hover{background:#030712} + .danger{background:var(--red)}.danger:hover{background:#912018} + .danger-outline{background:#fff;color:var(--red);border:1px solid #f3b7b2}.danger-outline:hover{background:var(--red-soft)} + .full-width{width:100%} + + .marketing-hero{padding:72px 0 46px}.marketing-hero h1{max-width:900px;font-size:64px;line-height:1.01;margin:12px 0 20px}.marketing-hero .lead{font-size:20px;max-width:820px}.compact-hero{padding-bottom:36px}.compact-hero h1{font-size:52px}.marketing-actions{margin-top:28px}.microcopy{font-size:13px;color:var(--muted);margin-top:14px}.trust-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden;margin:0 0 68px}.trust-strip span{background:var(--surface);padding:18px;text-align:center;font-size:13px;font-weight:750;color:#475467}.section-block{padding:24px 0 64px}.section-heading{max-width:760px;margin-bottom:28px}.section-heading h2,.split-panel h2,.cta-panel h2{font-size:38px;line-height:1.12;letter-spacing:-.03em;margin:8px 0 12px}.section-heading p{font-size:17px;color:#667085}.feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.feature-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:24px;box-shadow:var(--shadow-sm)}.feature-card h3{font-size:19px;margin:18px 0 8px}.feature-card p{color:#667085;margin:0}.feature-icon{display:inline-flex;width:38px;height:38px;align-items:center;justify-content:center;border-radius:10px;background:var(--blue-soft);color:var(--blue-dark);font-size:12px;font-weight:900}.split-panel{display:grid;grid-template-columns:1.2fr .8fr;gap:44px;align-items:center;background:#0f172a;color:#fff;border-radius:22px;padding:42px;margin-bottom:64px}.split-panel .lead{color:#cbd5e1}.check-panel{display:grid;gap:10px}.check-panel div{padding:13px 14px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.05);border-radius:10px;font-weight:650}.check-panel div:before{content:'✓';margin-right:10px;color:#86efac}.pricing-preview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.marketing-price{font-size:38px;font-weight:900;letter-spacing:-.035em;margin-top:14px}.marketing-price small{font-size:15px;font-weight:650;color:var(--muted);letter-spacing:0}.center-action{text-align:center;margin-top:24px}.cta-panel{display:flex;align-items:center;justify-content:space-between;gap:30px;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:34px 38px;box-shadow:var(--shadow-md);margin:12px 0 20px}.cta-panel h2{margin-bottom:6px}.cta-panel p{margin:0;color:#667085}.feature-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:10px 0 64px}.feature-detail{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:28px}.feature-detail>span{color:var(--blue);font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.12em}.feature-detail h2{font-size:24px;margin:8px 0}.feature-detail p{color:#667085;margin:0}.release-body{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:42px;margin:10px 0 64px}.release-main{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:36px}.release-main h2{font-size:28px;margin:32px 0 10px}.release-main p,.release-list{color:#475467;font-size:16px;line-height:1.75}.release-list{padding-left:22px}.release-aside{align-self:start;position:sticky;top:92px} + .pricing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:20px 0 28px} + .price-card,.card,.panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:24px;box-shadow:var(--shadow-sm)} + .price-card{display:flex;flex-direction:column;justify-content:space-between;gap:24px}.price-card.featured{border-color:#9dbcf7} + .plan-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.plan-heading h2{margin:0 0 5px}.price{font-size:28px;font-weight:850;margin:20px 0}.features{padding-left:20px;line-height:1.9} + .pill,.sandbox-badge{display:inline-block;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:750;background:var(--blue-soft);color:var(--blue-dark)} + .sandbox-badge{margin-top:8px;background:#fff7ed;color:#9a3412}.checkout-button{width:100%;font-size:15px;font-weight:750;padding:12px 16px} + .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.muted{color:var(--muted)}.ok{color:var(--green)}.bad{color:var(--red)} + input{width:100%;padding:11px 12px;border:1px solid #cbd5e1;border-radius:9px;margin:6px 0 14px;background:#fff;color:var(--text)} + label{font-weight:650}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px;border-bottom:1px solid #e5e7eb} + .alert,.error{padding:13px 15px;border-radius:10px;margin:0 0 20px;font-weight:650}.alert{background:var(--green-soft);color:var(--green);border:1px solid #abefc6}.error{background:var(--red-soft);color:var(--red);border:1px solid #fecdca} + + /* Product launch page */ + .launch-main{overflow:hidden} + .launch-hero{position:relative;background:linear-gradient(180deg,#0b1220 0,#101b31 78%,#f7f9fc 78%);padding:82px 24px 106px;color:#fff} + .launch-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 75% 12%,rgba(59,130,246,.26),transparent 34%),radial-gradient(circle at 18% 32%,rgba(14,165,233,.13),transparent 28%);pointer-events:none} + .launch-shell{position:relative;max-width:1220px;margin:0 auto} + .hero-grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(500px,1.05fr);gap:72px;align-items:center} + .launch-kicker{display:inline-flex;align-items:center;gap:8px;background:rgba(59,130,246,.12);border:1px solid rgba(147,197,253,.22);color:#bfdbfe;padding:7px 11px;border-radius:999px;font-size:12px;font-weight:800;letter-spacing:.02em} + .launch-kicker:before{content:"";width:7px;height:7px;border-radius:50%;background:#60a5fa;box-shadow:0 0 0 4px rgba(96,165,250,.12)} + .launch-hero h1{font-size:clamp(46px,6vw,74px);line-height:.98;letter-spacing:-.055em;margin:20px 0 22px;max-width:760px} + .hero-copy{font-size:19px;line-height:1.65;color:#cbd5e1;max-width:650px;margin:0} + .hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}.hero-actions .btn{padding:13px 18px;border-radius:11px} + .hero-actions .btn-secondary{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.18);color:#fff}.hero-actions .btn-secondary:hover{background:rgba(255,255,255,.12)} + .hero-note{margin:16px 0 0;color:#94a3b8;font-size:13px} + .trust-row{display:flex;gap:20px;flex-wrap:wrap;margin-top:34px;color:#cbd5e1;font-size:13px}.trust-item{display:flex;align-items:center;gap:7px}.trust-check{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:rgba(34,197,94,.12);color:#86efac;font-size:11px;font-weight:900} + + .app-window{border:1px solid rgba(255,255,255,.15);border-radius:18px;background:#f8fafc;box-shadow:0 34px 70px rgba(0,0,0,.32);overflow:hidden;color:#111827;transform:perspective(1200px) rotateY(-2deg) rotateX(1deg);transform-origin:center} + .window-bar{height:46px;background:#eef2f7;border-bottom:1px solid #dde3ec;display:flex;align-items:center;padding:0 14px;gap:8px}.dot{width:11px;height:11px;border-radius:50%}.dot.red{background:#ff5f57}.dot.amber{background:#febc2e}.dot.green{background:#28c840}.window-title{margin-left:8px;font-size:12px;font-weight:750;color:#667085} + .app-body{display:grid;grid-template-columns:160px 1fr;min-height:390px}.app-sidebar{background:#111827;color:#cbd5e1;padding:18px 12px}.mini-brand{display:flex;align-items:center;gap:8px;color:#fff;font-weight:800;font-size:12px;margin:0 8px 18px}.mini-brand img{width:26px;height:26px;border-radius:7px}.side-item{padding:8px 10px;border-radius:8px;font-size:11px;margin:3px 0}.side-item.active{background:#263244;color:#fff}.app-content{padding:20px;background:#f8fafc}.app-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.app-toolbar strong{font-size:15px}.sync-all{font-size:10px;background:#2563eb;color:#fff;padding:7px 9px;border-radius:7px;font-weight:800}.mock-job{background:#fff;border:1px solid #e2e8f0;border-radius:11px;padding:13px 14px;margin-bottom:10px;box-shadow:0 1px 2px rgba(15,23,42,.04)}.mock-job-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.mock-job strong{font-size:12px}.job-state{font-size:9px;font-weight:850;padding:4px 7px;border-radius:999px}.state-ready{background:#ecfdf3;color:#047857}.state-scheduled{background:#eff6ff;color:#1d4ed8}.state-watching{background:#f5f3ff;color:#6d28d9}.mock-job p{font-size:9px;color:#64748b;margin:4px 0 9px}.mock-progress{height:5px;background:#eef2f7;border-radius:999px;overflow:hidden}.mock-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2563eb,#38bdf8)}.app-statusbar{display:flex;justify-content:space-between;color:#64748b;font-size:9px;margin-top:16px;padding-top:13px;border-top:1px solid #e2e8f0} + + .launch-section{padding:92px 24px}.section-shell{max-width:1120px;margin:0 auto}.section-head{max-width:690px;margin-bottom:42px}.section-head.center{text-align:center;margin-left:auto;margin-right:auto}.section-head h2{font-size:clamp(32px,4vw,46px);line-height:1.08;letter-spacing:-.04em;margin:8px 0 14px}.section-head p{font-size:17px;color:#667085;margin:0;line-height:1.65} + .feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.feature-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:var(--shadow-sm)}.feature-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:11px;background:var(--blue-soft);color:var(--blue);font-weight:900;font-size:18px;margin-bottom:18px}.feature-card h3{font-size:18px;margin:0 0 8px;letter-spacing:-.015em}.feature-card p{color:#667085;margin:0;line-height:1.6} + .workflow-section{background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.workflow-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.workflow-step{position:relative;padding:4px 10px 4px 0}.step-number{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:#101828;color:#fff;font-weight:850;margin-bottom:16px}.workflow-step h3{font-size:17px;margin:0 0 7px}.workflow-step p{color:#667085;margin:0;font-size:14px;line-height:1.6} + .security-panel{background:#0f172a;color:#fff;border-radius:24px;padding:48px;display:grid;grid-template-columns:.9fr 1.1fr;gap:60px;align-items:center;box-shadow:var(--shadow-md)}.security-panel h2{font-size:38px;line-height:1.08;letter-spacing:-.04em;margin:8px 0 15px}.security-panel p{color:#cbd5e1;font-size:16px;line-height:1.65}.security-list{display:grid;gap:13px}.security-item{display:flex;gap:12px;align-items:flex-start;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.08);border-radius:13px;padding:14px}.security-icon{display:grid;place-items:center;width:30px;height:30px;flex:0 0 30px;border-radius:8px;background:rgba(59,130,246,.17);color:#93c5fd;font-weight:900}.security-item strong{display:block;font-size:14px;margin-bottom:2px}.security-item span{display:block;color:#94a3b8;font-size:12px;line-height:1.5} + .plan-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;max-width:860px;margin:0 auto}.launch-plan{background:#fff;border:1px solid var(--line);border-radius:20px;padding:30px;box-shadow:var(--shadow-sm);position:relative}.launch-plan.featured{border-color:#9dbcf7;box-shadow:0 18px 44px rgba(37,99,235,.09)}.launch-plan h3{font-size:23px;margin:0}.launch-plan p{color:#667085}.plan-macs{font-size:34px;font-weight:850;letter-spacing:-.04em;margin:24px 0 3px}.plan-sub{font-size:13px;color:#667085}.plan-list{list-style:none;padding:0;margin:24px 0;display:grid;gap:11px}.plan-list li{display:flex;gap:9px;color:#475467}.plan-list li:before{content:"✓";color:#16a34a;font-weight:900}.launch-plan .btn{width:100%;padding:12px}.best-badge{position:absolute;right:18px;top:18px;background:var(--blue-soft);color:var(--blue-dark);border-radius:999px;padding:5px 9px;font-size:11px;font-weight:850} + .launch-cta{padding:30px 24px 100px}.cta-box{max-width:1120px;margin:0 auto;background:linear-gradient(135deg,#2563eb,#1d4ed8 55%,#0f4fc9);color:#fff;border-radius:26px;padding:54px;display:flex;align-items:center;justify-content:space-between;gap:36px;box-shadow:0 24px 54px rgba(37,99,235,.2)}.cta-box h2{font-size:38px;line-height:1.08;letter-spacing:-.04em;margin:0 0 10px}.cta-box p{margin:0;color:#dbeafe;font-size:16px}.cta-box .btn{background:#fff;color:#1e3a8a;padding:13px 18px;white-space:nowrap}.cta-box .btn:hover{background:#eff6ff} + + .portal-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:26px}.licence-list{display:grid;gap:16px}.licence-card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-sm);overflow:hidden}.licence-card-featured{border-color:#c6d7fb}.licence-main{padding:24px 26px}.licence-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.licence-title-row h2{font-size:22px;margin:10px 0 2px;letter-spacing:-.015em}.licence-key{margin:0}.badge-row{display:flex;gap:7px;flex-wrap:wrap}.status-badge,.plan-badge,.billing-badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:800}.status-active{background:var(--green-soft);color:var(--green)}.status-inactive{background:var(--red-soft);color:var(--red)}.plan-badge{background:var(--blue-soft);color:var(--blue-dark)}.billing-badge{background:#f2f4f7;color:#475467}.licence-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:24px 0 12px;padding-top:20px;border-top:1px solid var(--line)}.licence-stats>div{display:flex;flex-direction:column;gap:3px}.stat-label{font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.licence-stats strong{font-size:15px}.activation-meter{height:7px;background:#eef2f6;border-radius:99px;overflow:hidden}.activation-meter span{display:block;height:100%;background:var(--blue);border-radius:99px}.upgrade-strip,.subscription-warning{margin-top:20px;border-radius:12px;padding:15px 16px;display:flex;align-items:center;justify-content:space-between;gap:16px}.upgrade-strip{background:#f5f8ff;border:1px solid #dbe7ff}.upgrade-strip div{display:flex;flex-direction:column;gap:2px}.upgrade-strip span{color:#475467;font-size:14px}.subscription-warning{background:#fff7ed;border:1px solid #fed7aa}.subscription-warning p{margin:3px 0 0;color:#9a3412;font-size:13px;max-width:720px}.empty-state{background:#fff;border:1px dashed #cbd5e1;border-radius:16px;padding:44px;text-align:center}.empty-state h2{margin-top:0}.history-panel{margin-top:26px;background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.history-panel summary{cursor:pointer;padding:16px 20px;font-weight:800}.history-panel summary span{display:inline-flex;margin-left:6px;min-width:22px;height:22px;align-items:center;justify-content:center;border-radius:99px;background:#f2f4f7;color:#475467;font-size:12px}.history-list{border-top:1px solid var(--line)}.history-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:18px;padding:14px 20px;border-bottom:1px solid var(--line)}.history-row:last-child{border-bottom:0}.history-row>div:first-child{display:flex;flex-direction:column}.history-row span{font-size:13px;color:var(--muted)}.history-status{font-size:13px;color:var(--muted)}.history-row a{font-weight:700;color:var(--blue);text-decoration:none}.back-link{display:inline-block;margin-bottom:20px;color:#475467;text-decoration:none;font-weight:700}.licence-detail-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px}.licence-detail-head h1{font-size:32px}.detail-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,.7fr);gap:18px}.panel{margin:0}.panel h2{margin:0;font-size:20px}.panel-heading{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding-bottom:18px;border-bottom:1px solid var(--line)}.panel-heading p{margin:4px 0 0;color:var(--muted)}.activation-count{font-weight:800;background:var(--blue-soft);color:var(--blue-dark);padding:6px 10px;border-radius:999px}.device-row{display:grid;grid-template-columns:42px 1fr auto;gap:14px;align-items:center;padding:17px 0;border-bottom:1px solid var(--line)}.device-row:last-child{border-bottom:0}.device-icon{width:42px;height:42px;display:flex;align-items:center;justify-content:center;background:#f2f4f7;border-radius:10px;font-size:20px}.device-copy{display:flex;flex-direction:column;min-width:0}.device-copy span,.device-copy small{color:var(--muted)}.device-copy small{margin-top:2px}.empty-inline{padding:26px 0 4px;color:var(--muted)}.subscription-panel form+form{margin-top:10px}.subscription-facts{margin:18px 0 22px}.subscription-facts>div{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--line)}.subscription-facts dt{color:var(--muted)}.subscription-facts dd{margin:0;font-weight:700;text-align:right} + + .site-footer{background:#0b1220;color:#94a3b8;border-top:1px solid rgba(255,255,255,.06)}.footer-shell{max-width:1220px;margin:0 auto;padding:34px 24px;display:flex;align-items:center;justify-content:space-between;gap:28px}.footer-brand{display:flex;align-items:center;gap:10px;color:#e2e8f0;font-weight:800}.footer-brand img{width:28px;height:28px;border-radius:7px}.footer-links{display:flex;gap:20px;flex-wrap:wrap}.footer-links a{color:#cbd5e1;text-decoration:none;font-size:13px;font-weight:650}.footer-links a:hover{color:#fff}.footer-cookie-link{background:none!important;border:0!important;padding:0!important;color:#cbd5e1!important;font-size:13px!important;font-weight:650!important;box-shadow:none!important}.footer-cookie-link:hover{color:#fff!important}.footer-copy{font-size:12px;margin-top:5px} + + @media(max-width:980px){ + .hero-grid{grid-template-columns:1fr;gap:48px}.app-window{max-width:720px;transform:none}.feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.workflow-grid{grid-template-columns:repeat(2,1fr)}.security-panel{grid-template-columns:1fr;gap:28px}.nav-email{display:none} + } + @media(max-width:900px){.feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.trust-strip{grid-template-columns:repeat(2,1fr)}.release-body{grid-template-columns:1fr}.release-aside{position:static}.marketing-hero h1{font-size:50px}} + @media(max-width:760px){ + .site-header{position:relative}.nav-shell{padding:10px 16px;min-height:64px;gap:12px;flex-wrap:wrap}.brand{margin-right:auto}.nav-links{order:3;width:100%;gap:18px;overflow-x:auto;padding:2px 0 4px}.nav-links::-webkit-scrollbar{display:none}.nav-account{margin-left:0}.nav-account .nav-auth-link{display:none}.wrap{padding:28px 16px 48px}.pricing-grid,.plan-grid{grid-template-columns:1fr}.hero-card h1,.portal-header h1{font-size:32px}.portal-header,.licence-detail-head,.licence-title-row,.upgrade-strip,.subscription-warning{align-items:stretch;flex-direction:column}.portal-header .btn,.licence-title-row .btn{width:100%}.licence-stats{grid-template-columns:1fr}.detail-grid{grid-template-columns:1fr}.history-row{grid-template-columns:1fr auto}.history-row a{grid-column:1/-1}.device-row{grid-template-columns:38px 1fr}.device-row form{grid-column:1/-1}.device-row form button{width:100%} + .launch-hero{padding:58px 18px 88px;background:linear-gradient(180deg,#0b1220 0,#101b31 84%,#f7f9fc 84%)}.launch-hero h1{font-size:48px}.hero-copy{font-size:17px}.app-body{grid-template-columns:120px 1fr;min-height:330px}.app-sidebar{padding:12px 8px}.side-item{padding:7px 8px}.app-content{padding:14px}.launch-section{padding:68px 18px}.feature-grid,.workflow-grid{grid-template-columns:1fr}.security-panel{padding:30px 24px;border-radius:20px}.security-panel h2{font-size:32px}.cta-box{padding:36px 26px;align-items:flex-start;flex-direction:column}.cta-box h2{font-size:32px}.footer-shell{align-items:flex-start;flex-direction:column}.launch-cta{padding:16px 18px 72px} + } + @media(max-width:480px){.launch-hero h1{font-size:42px}.hero-actions{flex-direction:column}.hero-actions .btn{width:100%}.app-body{grid-template-columns:1fr}.app-sidebar{display:none}.window-title{display:none}.launch-kicker{font-size:11px}.feature-card{padding:22px}} + @media(max-width:760px){ + .site-header{position:static}.nav-shell{min-height:auto;padding:12px 16px;flex-wrap:wrap;gap:10px}.brand{flex:1}.nav-links{order:3;width:100%;overflow-x:auto;display:flex;gap:6px;padding:4px 0 2px;scrollbar-width:none}.nav-links::-webkit-scrollbar{display:none}.nav-links a{white-space:nowrap;padding:8px 10px;border-radius:8px;background:var(--surface-soft)}.nav-account{margin-left:auto}.nav-email{display:none}.wrap{padding-left:16px;padding-right:16px}.hero-card{padding:30px 22px}.marketing-hero h1{font-size:clamp(38px,11vw,52px);line-height:1.02}.marketing-actions{align-items:stretch}.marketing-actions .btn{width:100%;justify-content:center}.pricing-grid,.pricing-preview-grid,.feature-detail-grid,.feature-grid{grid-template-columns:1fr!important}.price-card{min-width:0}.checkout-button{width:100%}.cta-panel{display:grid;grid-template-columns:1fr;gap:20px}.cta-panel .btn{width:100%;justify-content:center}.footer-shell{grid-template-columns:1fr;gap:20px}.footer-links{justify-content:flex-start}.cookie-banner{left:12px;right:12px;bottom:12px}.cookie-actions{display:grid;grid-template-columns:1fr;width:100%}.cookie-actions .btn{width:100%}} + @media(max-width:420px){.nav-account .nav-auth-link{display:none}.nav-cta{padding:9px 11px}.hero-card{padding:26px 18px}.wrap{padding-left:12px;padding-right:12px}.price{font-size:34px}} + @media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}} + + + /* Launch polish + GDPR/support UI */ + .launch-hero{background:linear-gradient(135deg,#07111f 0%,#0b1d36 54%,#0c2b55 100%);padding:78px 24px 82px} + .launch-hero:after{content:"";position:absolute;right:-10%;bottom:-36%;width:58%;height:80%;background:radial-gradient(ellipse at center,rgba(37,99,235,.45),rgba(14,165,233,.14) 42%,transparent 68%);filter:blur(18px);pointer-events:none} + .app-window{background:#1c1c1e;border-color:rgba(255,255,255,.14);box-shadow:0 34px 70px rgba(0,0,0,.42)} + .window-bar{background:#252527;border-bottom-color:#353539;color:#d4d4d8}.app-body{background:#1c1c1e}.app-sidebar{background:#252526;border-right:1px solid #39393d}.mini-brand{color:#f4f4f5}.side-item{color:#b7b7bd}.side-item.active{background:#1677ea;color:white}.app-content{background:#1c1c1e;color:#f4f4f5}.mock-job{background:#242426;border-color:#37373b;box-shadow:none}.mock-job p,.app-statusbar{color:#9f9fa6}.app-toolbar{color:#f4f4f5}.mock-progress{background:#34343a} + .launch-section{position:relative}.feature-card{border:1px solid rgba(148,163,184,.18);box-shadow:0 14px 34px rgba(15,23,42,.06);transition:transform .18s ease,box-shadow .18s ease}.feature-card:hover{transform:translateY(-3px);box-shadow:0 20px 42px rgba(15,23,42,.10)} + .feature-card:nth-child(1){background:linear-gradient(135deg,#eef7ff,#dceeff)}.feature-card:nth-child(2){background:linear-gradient(135deg,#effdf5,#d9f8e7)}.feature-card:nth-child(3){background:linear-gradient(135deg,#fff9ed,#ffedc9)}.feature-card:nth-child(4){background:linear-gradient(135deg,#f8f1ff,#eadcff)}.feature-card:nth-child(5){background:linear-gradient(135deg,#fff1f4,#ffdce4)}.feature-card:nth-child(6){background:linear-gradient(135deg,#eafffb,#ccf7ef)} + .feature-card:nth-child(1) .feature-icon{background:#d7ebff;color:#1474e5}.feature-card:nth-child(2) .feature-icon{background:#c9f3dc;color:#079455}.feature-card:nth-child(3) .feature-icon{background:#ffe2aa;color:#e87500}.feature-card:nth-child(4) .feature-icon{background:#dfc9ff;color:#7c3aed}.feature-card:nth-child(5) .feature-icon{background:#ffc8d4;color:#e11d48}.feature-card:nth-child(6) .feature-icon{background:#bff2e9;color:#0891b2} + input,select,textarea{width:100%;padding:11px 12px;border:1px solid #cbd5e1;border-radius:9px;margin:6px 0 14px;background:#fff;color:var(--text);font:inherit}textarea{resize:vertical;min-height:150px}select{appearance:auto}.field-error{color:var(--red);font-size:13px;margin:-8px 0 12px}.form-help{font-size:12px;color:var(--muted);margin:-8px 0 14px}.honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important} + .support-hero{padding:8px 0 28px}.support-hero h1{font-size:44px;line-height:1.05;letter-spacing:-.04em;margin:8px 0 12px}.support-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.7fr);gap:22px;align-items:start}.support-form-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:var(--shadow-md)}.panel-heading-simple{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:20px;border-bottom:1px solid var(--line);margin-bottom:22px}.panel-heading-simple h2{margin:0 0 4px;font-size:23px}.panel-heading-simple p{margin:0;color:var(--muted)}.response-badge{background:var(--blue-soft);color:var(--blue-dark);padding:6px 10px;border-radius:999px;font-size:12px;font-weight:800}.form-grid.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}.consent-check{display:flex;align-items:flex-start;gap:10px;font-weight:500;color:#475467;margin:2px 0 20px}.consent-check input{width:18px;height:18px;margin:2px 0 0;flex:0 0 auto}.consent-check a{color:var(--blue);font-weight:700}.support-actions{display:flex;gap:12px;flex-wrap:wrap}.support-side{display:grid;gap:14px}.support-info-card{padding:22px;border-radius:18px;border:1px solid rgba(15,23,42,.08);box-shadow:var(--shadow-sm)}.support-info-card.blue{background:linear-gradient(135deg,#eff6ff,#dbeafe)}.support-info-card.green{background:linear-gradient(135deg,#ecfdf3,#d1fadf)}.support-info-card.violet{background:linear-gradient(135deg,#f5f3ff,#ede9fe)}.support-info-card h3{margin:12px 0 6px}.support-info-card p{margin:0;color:#475467}.support-info-icon{width:40px;height:40px;border-radius:11px;background:rgba(255,255,255,.75);display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:900;color:var(--blue)} + .legal-page{max-width:840px;margin:0 auto;background:#fff;border:1px solid var(--line);border-radius:20px;padding:42px 46px;box-shadow:var(--shadow-sm)}.legal-head{padding-bottom:24px;border-bottom:1px solid var(--line);margin-bottom:26px}.legal-head h1{font-size:42px;line-height:1.05;letter-spacing:-.04em;margin:8px 0}.legal-head p{margin:0;color:var(--muted)}.legal-intro{font-size:18px;line-height:1.65;color:#344054;background:linear-gradient(135deg,#eff6ff,#f8fafc);border:1px solid #dbeafe;border-radius:14px;padding:18px 20px;margin-bottom:30px}.legal-page section{padding:4px 0 16px}.legal-page h2{font-size:21px;margin:16px 0 8px}.legal-page p{color:#475467;line-height:1.72}.legal-page a,.link-button{color:var(--blue);font-weight:700}.link-button{padding:0;background:none;border:0;box-shadow:none;text-decoration:underline;display:inline}.link-button:hover{background:none;color:var(--blue-dark)}.legal-table,.cookie-table{display:grid;gap:10px}.legal-table>div,.cookie-table>div{display:grid;grid-template-columns:150px 1fr;gap:18px;padding:14px 0;border-bottom:1px solid var(--line)}.legal-table span,.cookie-table span{color:#475467} + .cookie-banner{position:fixed;z-index:1000;left:20px;right:20px;bottom:20px;max-width:980px;margin:auto;background:rgba(12,20,36,.98);color:#fff;border:1px solid rgba(255,255,255,.14);border-radius:18px;padding:20px 22px;box-shadow:0 24px 80px rgba(0,0,0,.38);backdrop-filter:blur(18px);display:none}.cookie-banner.is-open{display:block}.cookie-banner-grid{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center}.cookie-banner h2{margin:0 0 5px;font-size:18px}.cookie-banner p{margin:0;color:#cbd5e1;font-size:13px;line-height:1.55}.cookie-banner a{color:#bfdbfe}.cookie-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.cookie-actions button{padding:9px 12px}.cookie-actions .btn-secondary{background:transparent;color:#fff;border-color:rgba(255,255,255,.25)} + .cookie-modal-backdrop{position:fixed;z-index:1100;inset:0;background:rgba(2,6,23,.64);display:none;align-items:center;justify-content:center;padding:20px}.cookie-modal-backdrop.is-open{display:flex}.cookie-modal{width:min(620px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:20px;box-shadow:0 34px 90px rgba(0,0,0,.35)}.cookie-modal-head{padding:24px 26px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:18px}.cookie-modal-head h2{margin:0;font-size:24px}.cookie-close{background:#f2f4f7;color:#344054;width:36px;height:36px;padding:0;border-radius:50%}.cookie-close:hover{background:#e4e7ec}.cookie-modal-body{padding:8px 26px 4px}.cookie-option{display:grid;grid-template-columns:1fr auto;gap:18px;padding:17px 0;border-bottom:1px solid var(--line)}.cookie-option h3{margin:0 0 4px;font-size:16px}.cookie-option p{margin:0;color:var(--muted);font-size:13px}.cookie-switch{width:46px!important;height:24px!important;margin:2px 0!important;accent-color:var(--blue)}.cookie-modal-actions{padding:20px 26px 24px;display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.cookie-required{font-size:12px;font-weight:800;color:var(--green);padding-top:4px} + .admin-ticket-list{display:grid;gap:10px}.admin-ticket-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:18px;align-items:center;padding:16px 18px;background:#fff;border:1px solid var(--line);border-radius:14px;text-decoration:none;box-shadow:var(--shadow-sm)}.admin-ticket-row:hover{border-color:#b8cdf6}.admin-ticket-row>div:first-child{display:flex;flex-direction:column;min-width:0}.admin-ticket-row small{color:var(--muted)}.ticket-ref{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--blue);font-weight:850}.ticket-category,.ticket-status{padding:5px 8px;border-radius:999px;font-size:12px;font-weight:800;background:#f2f4f7;color:#475467}.status-new{background:#eff6ff;color:#1d4ed8}.status-open{background:#ecfdf3;color:#067647}.status-waiting{background:#fff7ed;color:#9a3412}.status-resolved,.status-closed{background:#f2f4f7;color:#475467}.admin-ticket-row time{color:var(--muted);font-size:12px}.filter-bar{display:flex;align-items:center;gap:10px;margin-bottom:18px}.filter-bar select{width:auto;margin:0}.ticket-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:22px}.ticket-detail-head h1{font-size:34px;line-height:1.12;letter-spacing:-.03em;margin:6px 0}.ticket-detail-head p{margin:0;color:var(--muted)}.ticket-message .ticket-meta{display:flex;gap:12px;color:var(--muted);font-size:13px;margin:8px 0 20px}.message-body{white-space:normal;background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:18px;line-height:1.7;margin-bottom:18px} + @media(max-width:800px){.support-layout{grid-template-columns:1fr}.form-grid.two{grid-template-columns:1fr}.legal-page{padding:28px 22px}.legal-table>div,.cookie-table>div{grid-template-columns:1fr;gap:4px}.cookie-banner-grid{grid-template-columns:1fr}.cookie-actions{justify-content:flex-start}.admin-ticket-row{grid-template-columns:1fr auto}.admin-ticket-row .ticket-category,.admin-ticket-row time{display:none}.ticket-detail-head{flex-direction:column}} + + + /* SonarDesk distribution centre */ + .download-page{background:#f6f8fc;min-height:80vh}.download-shell{max-width:1220px;margin:0 auto;padding-left:24px;padding-right:24px}.download-hero{position:relative;overflow:hidden;background:radial-gradient(circle at 78% 22%,rgba(37,99,235,.22),transparent 32%),linear-gradient(135deg,#07111f 0%,#0b1730 55%,#101c35 100%);color:#fff;padding:92px 0 78px}.download-hero:after{content:'';position:absolute;inset:auto -10% -220px 35%;height:420px;background:rgba(59,130,246,.08);filter:blur(60px);border-radius:50%}.download-hero .download-shell{display:grid;grid-template-columns:1.02fr .98fr;gap:70px;align-items:center;position:relative;z-index:1}.download-copy h1{font-size:68px;line-height:.98;letter-spacing:-.055em;margin:12px 0 22px}.download-copy>p{font-size:20px;line-height:1.65;color:#cbd5e1;max-width:660px}.download-actions{display:flex;gap:12px;align-items:stretch;margin:32px 0 20px;flex-wrap:wrap}.download-primary{background:#fff!important;color:#0f172a!important;padding:13px 18px!important;gap:12px;text-align:left;box-shadow:0 16px 40px rgba(0,0,0,.22)}.download-primary:hover{transform:translateY(-1px)}.download-primary small{display:block;color:#64748b;font-size:11px;margin-top:3px}.download-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:8px;background:#2563eb;color:#fff;font-size:20px}.download-secondary{background:rgba(255,255,255,.07)!important;border:1px solid rgba(255,255,255,.18)!important;color:#fff!important}.release-verification{display:flex;gap:18px;flex-wrap:wrap;color:#94a3b8;font-size:12px}.release-verification span:First-letter{color:#86efac}.product-visual{position:relative;perspective:1000px}.mac-window{border:1px solid rgba(255,255,255,.15);background:#111827;border-radius:18px;box-shadow:0 36px 90px rgba(0,0,0,.45);overflow:hidden;transform:rotateY(-5deg) rotateX(2deg)}.mac-titlebar{height:42px;background:#1b2434;display:flex;align-items:center;gap:7px;padding:0 14px;border-bottom:1px solid rgba(255,255,255,.06)}.mac-titlebar i{width:10px;height:10px;border-radius:50%;background:#fb7185}.mac-titlebar i:nth-child(2){background:#fbbf24}.mac-titlebar i:nth-child(3){background:#4ade80}.mac-titlebar span{margin-left:auto;margin-right:auto;color:#94a3b8;font-size:11px}.mac-content{display:grid;grid-template-columns:110px 1fr;height:310px}.mini-sidebar{background:#0b1220;padding:18px 12px;display:flex;flex-direction:column;gap:12px}.mini-sidebar img{width:30px;border-radius:8px}.mini-sidebar b{font-size:10px}.mini-sidebar span{height:9px;border-radius:4px;background:#26344c;width:78%}.mini-sidebar span.active{background:#2563eb;width:90%}.mini-dashboard{padding:24px}.mini-head{display:flex;justify-content:space-between;align-items:center}.mini-head b{font-size:14px}.mini-head em{font-size:8px;color:#4ade80;font-style:normal}.mini-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:20px 0}.mini-stats i{height:58px;border:1px solid #273449;border-radius:8px;background:linear-gradient(145deg,#162033,#101827)}.mini-chart{height:130px;border:1px solid #273449;border-radius:9px;display:flex;align-items:flex-end;gap:9px;padding:16px}.mini-chart span{flex:1;background:linear-gradient(#3b82f6,#1d4ed8);border-radius:4px 4px 2px 2px}.mini-chart span:nth-child(1){height:35%}.mini-chart span:nth-child(2){height:58%}.mini-chart span:nth-child(3){height:45%}.mini-chart span:nth-child(4){height:78%}.mini-chart span:nth-child(5){height:66%}.mini-chart span:nth-child(6){height:90%}.visual-badge{position:absolute;right:-20px;bottom:-22px;background:#fff;color:#0f172a;border-radius:12px;padding:12px 18px;box-shadow:0 14px 34px rgba(0,0,0,.3)}.visual-badge span{display:block;font-size:9px;color:#2563eb;text-transform:uppercase;font-weight:900;letter-spacing:.12em}.visual-badge strong{font-size:13px}.download-confidence{background:#fff;border-bottom:1px solid #e5e7eb}.confidence-grid{display:grid;grid-template-columns:repeat(4,1fr);padding-top:25px;padding-bottom:25px}.confidence-grid div{padding:0 24px;border-right:1px solid #e5e7eb}.confidence-grid div:first-child{padding-left:0}.confidence-grid div:last-child{border:0}.confidence-grid span{display:block;text-transform:uppercase;letter-spacing:.1em;font-size:9px;font-weight:900;color:#2563eb;margin-bottom:4px}.confidence-grid strong{font-size:12px;color:#344054}.download-content{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,.6fr);gap:28px;padding-top:72px;padding-bottom:72px}.release-notes-panel,.requirements-panel{background:#fff;border:1px solid #e4e7ec;border-radius:20px;padding:34px;box-shadow:0 12px 35px rgba(15,23,42,.05)}.release-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;border-bottom:1px solid #eaecf0;padding-bottom:24px}.release-heading h2,.requirements-panel h2{font-size:30px;letter-spacing:-.03em;margin:7px 0 5px}.release-heading p{margin:0;color:#667085}.release-note-copy{padding:28px 0;color:#475467;font-size:16px;line-height:1.8}.checksum-box{background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;padding:14px}.checksum-box span{display:block;font-size:9px;font-weight:900;letter-spacing:.12em;color:#64748b;margin-bottom:5px}.checksum-box code{font-size:11px;overflow-wrap:anywhere;color:#334155}.requirements-panel p{color:#667085}.requirements-panel ol{list-style:none;padding:15px 0;margin:0}.requirements-panel li{display:flex;gap:12px;padding:13px 0;border-top:1px solid #eef2f6}.requirements-panel li>span{display:grid;place-items:center;width:28px;height:28px;background:#eff6ff;color:#2563eb;border-radius:8px;font-weight:900;font-size:11px}.requirements-panel li strong,.requirements-panel li small{display:block}.requirements-panel li small{color:#667085;margin-top:2px}.requirements-panel>a{color:#2563eb;font-weight:800;text-decoration:none;font-size:13px}.release-history{background:#fff;border-top:1px solid #e5e7eb;padding:70px 0}.release-history-list{border:1px solid #e5e7eb;border-radius:16px;overflow:hidden}.release-history-list article{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid #e5e7eb}.release-history-list article:last-child{border:0}.release-history-list strong,.release-history-list span{display:block}.release-history-list span{font-size:12px;color:#667085;margin-top:3px}.release-history-list article>div:last-child{display:flex;align-items:center;gap:20px}.release-history-list a{color:#2563eb;font-weight:800;text-decoration:none}.download-support{background:#0b1220;color:#fff;padding:55px 0}.download-support .download-shell{display:flex;align-items:center;justify-content:space-between;gap:30px}.download-support h2{font-size:32px;margin:7px 0}.download-support p{color:#94a3b8;margin:0}.no-release{margin-top:28px;padding:18px;border:1px solid rgba(255,255,255,.15);border-radius:12px;background:rgba(255,255,255,.06)}.no-release span{display:block;color:#94a3b8;margin-top:3px} + .admin-release-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.admin-metrics{margin-bottom:24px}.admin-table-card,.editor-card{background:#fff;border:1px solid #e4e7ec;border-radius:16px;box-shadow:var(--shadow-sm)}.admin-table-title{display:flex;justify-content:space-between;align-items:center;padding:22px 24px;border-bottom:1px solid #e4e7ec}.admin-table-title h2{margin:0;font-size:19px}.admin-table-title p{margin:3px 0 0;color:#667085;font-size:13px}.table-scroll{overflow-x:auto}.pro-table{width:100%;border-collapse:collapse}.pro-table th{background:#f8fafc;text-align:left;padding:11px 16px;color:#667085;font-size:10px;text-transform:uppercase;letter-spacing:.08em}.pro-table td{padding:15px 16px;border-top:1px solid #eef2f6;vertical-align:middle}.pro-table td strong,.pro-table td small{display:block}.pro-table td small{color:#667085;margin-top:3px}.table-actions{display:flex;gap:7px;justify-content:flex-end}.table-actions form{margin:0}.status-chip{display:inline-flex;padding:4px 8px;border-radius:99px;background:#eff6ff;color:#1d4ed8;font-size:10px;font-weight:850}.status-chip.success{background:#ecfdf3;color:#067647}.status-chip.muted{background:#f2f4f7;color:#667085}.empty-cell{text-align:center!important;color:#667085;padding:40px!important}.release-editor{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;align-items:start}.editor-main{display:grid;gap:18px}.editor-card{padding:24px}.editor-card-head{display:flex;gap:13px;margin-bottom:22px}.editor-card-head>span{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#eff6ff;color:#2563eb;font-size:10px;font-weight:900}.editor-card h2{margin:0;font-size:19px}.editor-card p{margin:3px 0 0;color:#667085;font-size:13px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.editor-card label,.settings-editor label{display:grid;gap:7px;font-size:12px;font-weight:800;color:#344054}.editor-card input,.editor-card select,.editor-card textarea,.settings-editor input,.settings-editor textarea{width:100%;border:1px solid #d0d5dd;border-radius:9px;padding:10px 12px;background:#fff;color:#101828;font:inherit}.upload-zone{padding:22px!important;border:1px dashed #98a2b3;border-radius:12px;background:#f9fafb;margin-bottom:18px}.upload-zone span{color:#667085;font-weight:500}.upload-zone input{border:0!important;padding:10px 0 0!important;background:transparent!important}.package-current{padding:13px 15px;border-radius:10px;background:#ecfdf3;margin-bottom:14px}.package-current strong,.package-current span{display:block}.package-current span{font-size:10px;color:#067647;overflow-wrap:anywhere;margin-top:4px}.sticky-card{position:sticky;top:92px}.toggle-row{display:flex!important;align-items:flex-start;gap:10px!important;padding:14px 0;border-top:1px solid #eef2f6}.toggle-row input{width:auto!important;margin-top:3px}.toggle-row strong,.toggle-row small{display:block}.toggle-row small{color:#667085;margin-top:2px;font-weight:500}.sticky-card .btn{margin-top:10px}.settings-editor{max-width:820px;display:grid;gap:18px} + @media(max-width:900px){.download-hero .download-shell{grid-template-columns:1fr}.product-visual{display:none}.download-copy h1{font-size:52px}.confidence-grid{grid-template-columns:repeat(2,1fr);gap:20px}.confidence-grid div{border:0;padding:0}.download-content,.release-editor{grid-template-columns:1fr}.sticky-card{position:static}.download-support .download-shell,.admin-release-head{align-items:flex-start;flex-direction:column}}@media(max-width:600px){.download-hero{padding:64px 0}.download-copy h1{font-size:42px}.download-actions,.release-heading{flex-direction:column}.download-primary,.download-secondary{width:100%}.confidence-grid{grid-template-columns:1fr}.release-history-list article{align-items:flex-start;gap:12px;flex-direction:column}.download-content{padding-top:40px;padding-bottom:40px}.release-notes-panel,.requirements-panel{padding:22px}.form-grid{grid-template-columns:1fr}.download-support .download-shell{align-items:stretch}} +.portal-download-banner{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 20px;margin-bottom:22px;background:linear-gradient(135deg,#0f172a,#172554);color:#fff;border-radius:14px;box-shadow:var(--shadow-md)}.portal-download-banner strong,.portal-download-banner small{display:block}.portal-download-banner strong{font-size:18px;margin:3px 0}.portal-download-banner small{color:#cbd5e1}.portal-download-banner .eyebrow{color:#93c5fd}@media(max-width:650px){.portal-download-banner{align-items:stretch;flex-direction:column}} +.home-download-showcase{display:grid;grid-template-columns:1.25fr .75fr;gap:36px;align-items:center;margin:0 0 64px;padding:38px;background:linear-gradient(135deg,#f8fafc,#eff6ff);border:1px solid #dbeafe;border-radius:22px}.home-download-copy h2{font-size:38px;letter-spacing:-.035em;margin:7px 0 10px}.home-download-copy p{color:#667085;font-size:16px;max-width:680px}.home-download-meta{background:#0b1220;color:#fff;border-radius:16px;padding:24px;box-shadow:0 18px 40px rgba(15,23,42,.16)}.home-download-meta>span{display:block;color:#93c5fd;text-transform:uppercase;font-size:9px;font-weight:900;letter-spacing:.12em}.home-download-meta>strong{display:block;font-size:24px;margin:7px 0 3px}.home-download-meta>small{color:#94a3b8}.home-download-meta>div{margin-top:20px;padding-top:16px;border-top:1px solid rgba(255,255,255,.1)}.home-download-meta b,.home-download-meta code{display:block}.home-download-meta b{font-size:9px;color:#64748b;letter-spacing:.1em}.home-download-meta code{font-size:10px;color:#cbd5e1;margin-top:5px}@media(max-width:760px){.home-download-showcase{grid-template-columns:1fr;padding:24px}} + +.seo-admin-form{display:grid;gap:18px}.seo-section{padding:28px}.seo-section h2{margin:4px 0 4px;font-size:22px;letter-spacing:-.02em}.seo-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding-bottom:20px;margin-bottom:22px;border-bottom:1px solid var(--line)}.seo-section-head p{margin:0;color:var(--muted);max-width:680px}.seo-badge{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:var(--blue-soft);color:var(--blue-dark);font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}.seo-badge.success{background:var(--green-soft);color:var(--green)}.seo-dns-callout{display:grid;gap:5px;margin-bottom:22px;padding:16px 18px;border:1px solid #bfdbfe;border-radius:12px;background:#eff6ff;color:#1e3a8a}.seo-dns-callout span{color:#475569}.seo-dns-callout code{font-weight:800}.seo-savebar{position:sticky;bottom:18px;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:15px 18px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.96);backdrop-filter:blur(14px);box-shadow:0 14px 38px rgba(15,23,42,.14)}.seo-savebar strong,.seo-savebar span{display:block}.seo-savebar span{font-size:12px;color:var(--muted);margin-top:2px}.seo-preview{border:1px solid var(--line);border-radius:12px;padding:18px;background:#fff}.seo-preview-label{font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:10px}.seo-preview-title{color:#1a0dab;font-size:19px;line-height:1.3}.seo-preview-url{color:#188038;font-size:12px;margin:4px 0}.seo-preview-description{color:#4d5156;font-size:13px;line-height:1.45}@media(max-width:700px){.seo-section-head,.seo-savebar{align-items:stretch;flex-direction:column}.seo-savebar .btn{width:100%}} + +/* Download catalogue and distribution admin */ +.distribution-admin{max-width:1200px;margin:auto;padding-bottom:55px}.distribution-header{display:flex;justify-content:space-between;align-items:end;gap:24px}.distribution-header-actions{display:flex;gap:10px;flex-wrap:wrap}.distribution-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:25px 0}.distribution-summary>div{background:#fff;border:1px solid #e4e7ec;border-radius:14px;padding:18px 20px}.distribution-summary span,.distribution-summary strong{display:block}.distribution-summary span{font-size:12px;color:#667085}.distribution-summary strong{font-size:28px;color:#101828;margin-top:5px}.distribution-notice,.distribution-errors{padding:14px 18px;border-radius:10px;margin:16px 0;background:#ecfdf3;border:1px solid #a6f4c5;color:#067647}.distribution-errors{background:#fef3f2;border-color:#fecdca;color:#b42318}.distribution-table{margin-bottom:22px}.distribution-row-actions{display:flex;gap:14px;justify-content:flex-end;align-items:center;white-space:nowrap}.distribution-row-actions form{margin:0}.dist-action{background:none;border:0;padding:4px 0;color:#245bc6;font-weight:750;font-size:13px;cursor:pointer;text-decoration:none}.dist-unpublish{color:#b54708}.dist-publish{color:#067647}.distribution-panel{background:#fff;border:1px solid #e4e7ec;border-radius:14px;margin:12px 0;overflow:hidden}.distribution-panel>summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:12px;cursor:pointer;padding:19px 24px}.distribution-panel>summary::-webkit-details-marker{display:none}.distribution-panel>summary strong,.distribution-panel>summary small{display:block}.distribution-panel>summary strong{font-size:16px;color:#101828}.distribution-panel>summary small{font-size:12px;color:#667085;margin-top:4px}.dist-chevron{font-size:22px;color:#667085}.distribution-panel[open] .dist-chevron{transform:rotate(45deg)}.distribution-form{padding:24px;border-top:1px solid #eef2f6;display:grid;gap:16px}.distribution-form label{display:grid;gap:6px;font-size:13px;font-weight:750;color:#344054}.distribution-form input:not([type=checkbox]),.distribution-form textarea{width:100%;border:1px solid #d0d5dd;border-radius:9px;padding:11px 12px;background:#fff;color:#101828;font:inherit}.distribution-form .form-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.distribution-file{border:1px dashed #cbd5e1;border-radius:12px;padding:16px;background:#f8fafc}.distribution-file small{color:#667085;font-weight:400}.distribution-file input{background:transparent!important;border:0!important;padding-left:0!important}.distribution-check{display:flex!important;align-items:center;gap:12px!important;padding:12px 0}.distribution-check input{width:18px;height:18px;flex:none}.distribution-check strong,.distribution-check small{display:block}.distribution-check small{font-weight:400;color:#667085;margin-top:3px}.distribution-form>.btn{justify-self:start}.distribution-delete{padding:0 24px 22px}.distribution-catalogue{background:#f6f8fc;padding:76px 0;border-top:1px solid #e4e7ec}.distribution-product-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:28px}.distribution-product-card{background:#fff;border:1px solid #e4e7ec;border-radius:18px;padding:26px;display:flex;flex-direction:column;box-shadow:0 8px 30px rgba(16,24,40,.04)}.distribution-product-top,.distribution-product-footer{display:flex;justify-content:space-between;align-items:center;gap:12px}.distribution-platform{background:#eff6ff;color:#175cd3;border-radius:20px;padding:5px 10px;font-size:11px;font-weight:800}.distribution-version{font-size:12px;color:#667085}.distribution-product-icon{display:grid;place-items:center;width:48px;height:48px;background:#0b1730;color:#e8bc66;border-radius:12px;font-size:23px;margin:26px 0 12px}.distribution-product-card h3{font-size:22px;letter-spacing:-.03em;margin:0 0 8px;color:#101828}.distribution-product-card p{font-size:14px;line-height:1.6;color:#667085;flex:1;margin:0 0 28px}.distribution-product-footer{border-top:1px solid #eef2f6;padding-top:20px}.distribution-product-footer>span{font-size:12px;color:#667085}.checksum-box summary{cursor:pointer;font-size:12px;font-weight:750;color:#475467}.checksum-box code{display:block;margin-top:12px}.download-primary{background:#e8bc66!important;color:#101828!important}.download-icon{background:#101828!important;color:#e8bc66!important} +@media(max-width:900px){.distribution-product-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.distribution-header{align-items:start;flex-direction:column}}@media(max-width:640px){.distribution-product-grid,.distribution-summary{grid-template-columns:1fr}.distribution-form .form-grid{grid-template-columns:1fr}.distribution-row-actions{flex-wrap:wrap}.distribution-header-actions{width:100%}.distribution-table .pro-table{min-width:730px}} + +/* SonarDesk compact downloads layout */ +.download-page .download-content { + display: block; + padding-top: 28px; + padding-bottom: 28px; +} + +.download-page .release-notes-panel { + margin-bottom: 20px; +} + +.download-page .requirements-panel { + padding: 22px 26px; + box-shadow: none; +} + +.download-page .requirements-panel ol { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 16px; +} + +.download-page .requirements-panel li { + border: 0; +} + +.download-page .distribution-catalogue { + padding: 36px 0 48px; +} + +.download-page .distribution-product-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 14px; + margin-top: 18px; +} + +.download-page .distribution-product-card { + padding: 18px 20px; + border-radius: 12px; + box-shadow: none; +} + +.download-page .distribution-product-icon { + display: none; +} + +.download-page .distribution-product-card h3 { + font-size: 17px; + margin-top: 14px; +} + +.download-page .distribution-product-card p { + margin-bottom: 14px; +} + +/* Markdown product descriptions: readable headings, paragraphs and lists. */ +.download-page .distribution-product-description { color:#475467; font-size:14px; line-height:1.75; margin:0 0 20px; overflow-wrap:anywhere; } +.download-page .distribution-product-description > :first-child { margin-top:0; } +.download-page .distribution-product-description > :last-child { margin-bottom:0; } +.download-page .distribution-product-description h1, +.download-page .distribution-product-description h2, +.download-page .distribution-product-description h3 { color:#101828; font-weight:750; line-height:1.35; margin:22px 0 8px; letter-spacing:-.015em; } +.download-page .distribution-product-description h1 { font-size:20px; } +.download-page .distribution-product-description h2 { font-size:17px; } +.download-page .distribution-product-description h3 { font-size:15px; } +.download-page .distribution-product-description p { margin:0 0 12px; color:inherit; font-size:inherit; line-height:inherit; } +.download-page .distribution-product-description ul { list-style:disc outside; margin:0 0 16px; padding-left:22px; } +.download-page .distribution-product-description ol { list-style:decimal outside; margin:0 0 16px; padding-left:22px; } +.download-page .distribution-product-description li { display:list-item; margin:5px 0; padding:0; } +.download-page .distribution-product-description strong { color:#1d2939; font-weight:700; } +.download-page .distribution-product-description a { color:#175cd3; text-decoration:underline; } +.download-page .distribution-product-description code { background:#f2f4f7; border-radius:4px; padding:2px 4px; } +.download-page .distribution-product-description pre { overflow-x:auto; background:#f2f4f7; padding:12px; border-radius:8px; } +.download-page .distribution-product-description blockquote { border-left:3px solid #e8bc66; padding-left:12px; margin:12px 0; } + +.download-page .distribution-product-footer { + padding-top: 12px; +} + +.download-page .release-history { + padding: 36px 0; +} + +@media (max-width: 700px) { + .download-page .distribution-product-grid, + .download-page .requirements-panel ol { + grid-template-columns: 1fr; + } +} + + +/* Full-width software catalogue: one readable product per row */ +.download-page .distribution-catalogue > .download-shell { + width: min(100% - 48px, 1500px); + max-width: 1500px; + margin-inline: auto; +} +.download-page .distribution-product-grid { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 24px; + width: 100%; +} +.download-page .distribution-product-card { + width: 100%; + min-width: 0; + padding: clamp(24px, 3vw, 48px); +} +.download-page .distribution-product-description { + max-width: none; + width: 100%; + line-height: 1.7; +} +.download-page .distribution-product-description h2, +.download-page .distribution-product-description h3, +.download-page .distribution-product-description h4 { + font-weight: 700; + line-height: 1.3; + margin: 1.5em 0 .6em; + color: var(--text, #182235); +} +.download-page .distribution-product-description h2 { font-size: 1.5rem; } +.download-page .distribution-product-description h3 { font-size: 1.2rem; } +.download-page .distribution-product-description ul, +.download-page .distribution-product-description ol { padding-left: 1.5rem; margin: .75em 0 1.25em; } +.download-page .distribution-product-description li { margin: .3em 0; } +@media (max-width: 640px) { + .download-page .distribution-catalogue > .download-shell { width: calc(100% - 28px); } +} + +/* Compact product catalogue */ +.download-page .distribution-catalogue > .download-shell { width:min(100% - 40px,1200px);max-width:1200px;margin-inline:auto; } +.download-page .distribution-product-grid { display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr));gap:20px;align-items:stretch; } +.download-page .distribution-product-card { display:flex;flex-direction:column;width:auto;min-width:0;padding:26px;border-radius:18px; } +.download-page .distribution-product-card h3 {font-size:clamp(25px,2vw,30px);font-weight:800;letter-spacing:-.035em;line-height:1.15;margin:20px 0 12px;color:#101828;} +.download-page .distribution-product-description {font-size:15px;line-height:1.6;margin:0 0 20px;color:#475467;} +.download-page .distribution-product-footer {margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;} +.download-page .distribution-product-links {display:flex;align-items:center;gap:12px;flex-wrap:wrap;} +.download-page .distribution-product-links .product-details-link {color:#175cd3;font-weight:700;text-decoration:none;} +.download-page .distribution-product-links .product-details-link:hover {text-decoration:underline;} +.download-page .product-detail-panel {background:white;border:1px solid #e3e8ef;border-radius:18px;padding:clamp(24px,4vw,52px);margin:40px auto 70px;max-width:960px;} +.download-page .product-detail-panel h1 {font-size:clamp(32px,4vw,48px);font-weight:800;letter-spacing:-.04em;line-height:1.1;margin:14px 0;} +.download-page .product-detail-panel .distribution-product-description {margin-top:30px;font-size:16px;} +.download-page .product-detail-panel .distribution-product-description h2 {font-size:24px;margin:30px 0 12px;} +.download-page .product-detail-panel .distribution-product-description h3 {font-size:19px;margin:24px 0 10px;} +.download-page .product-detail-panel .distribution-product-description ul {list-style:disc;padding-left:25px;} +.download-page .product-detail-panel .distribution-product-description ol {list-style:decimal;padding-left:25px;} +.download-page .product-detail-panel .distribution-product-description li {margin:6px 0;} +@media(max-width:700px){.download-page .distribution-product-grid{grid-template-columns:1fr;}} + + +/* Compact, unified software catalogue */ +.download-page.catalogue-page .catalogue-header {padding:64px 0 32px;background:#f5f7fb;} +.download-page.catalogue-page .catalogue-header h1 {font-size:clamp(36px,4vw,54px);letter-spacing:-.045em;color:#101828;margin:10px 0;} +.download-page.catalogue-page .catalogue-header p {font-size:18px;color:#667085;max-width:720px;} +.download-page.catalogue-page .distribution-catalogue {padding-top:28px;} +.download-page .distribution-product-card h3 a {color:inherit;text-decoration:none;} +.download-page .distribution-product-card h3 a:hover {color:#175cd3;} +.download-page.catalogue-page .distribution-product-card {padding:24px;} +.download-page.catalogue-page .distribution-product-card h3 {margin:14px 0 10px;font-size:28px;} +.download-page.catalogue-page .distribution-product-description {margin-bottom:18px;} +.download-page .detail-section {margin-top:36px;border-top:1px solid #eaecf0;padding-top:26px;} +.download-page .detail-section h2 {font-size:24px;font-weight:800;margin-bottom:14px;color:#101828;} +.download-page .detail-section ol {padding-left:24px;list-style:decimal;} +.download-page .detail-section li {margin:8px 0;} +.download-page .detail-meta {color:#667085;margin:12px 0 22px;} + + +.sd-absdev-link{margin-left:auto;color:#f9fafb;text-decoration:none;font-size:13px;font-weight:700}.sd-brand-sub{color:#94a3b8;font-weight:500;font-size:12px}.sd-products-nav{display:flex;gap:18px;align-items:center}@media(max-width:750px){.sd-absdev-link{display:none}.sd-products-nav{flex-wrap:wrap}} diff --git a/resources/views/sonardesk/features.blade.php b/resources/views/sonardesk/features.blade.php index dd4ef15..a22d9fd 100644 --- a/resources/views/sonardesk/features.blade.php +++ b/resources/views/sonardesk/features.blade.php @@ -1,3 +1,15 @@ @extends('sonardesk.layout') -@section('title','SonarDesk Features') -@section('content')
Stay close to your projects, quality gates and issues without the browser overhead.
Spot passing and failing projects immediately.
Inspect reliability and security issues in context.
Explore maintainability findings and issue details.
Keep your project list organised and switch context quickly.
Manage connections to your SonarQube environments.
Produce project reports for sharing and AI-assisted analysis.
Find current installers and complete release notes.
Built around the checks developers make every day: project status, quality gates, issues, security findings and measures.
Keep configured SonarQube projects together and scan project health without opening a collection of browser tabs.
Surface the status and metrics that tell you whether a project needs attention, in a layout designed for quick review.
Browse the major SonarQube issue categories, filter the list and open an issue to inspect its details and context.
Issue browsing is designed to remain practical on projects with larger result sets by paging data from the server.
Configure the environments you work with and keep them available from the same SonarDesk workspace.
SonarQube tokens are stored using macOS Keychain rather than being treated as ordinary application preferences.
After checkout, the licence key is emailed to the customer. The SonarDesk portal can resend the key and manage licence information and Mac activations.
SonarDesk is distributed directly for macOS, giving the product a focused release and support channel outside the Mac App Store.
Choose Personal for one active Mac or Professional for up to three.
A dedicated Mac dashboard for SonarQube. Track quality gates, bugs, vulnerabilities and code smells across projects without living in a browser.
Built for macOS · Multiple SonarQube servers · Native workflow
Illustrative preview, not live project data.
Designed for developers who need actionable SonarQube information without switching tabs.
See gate status, bugs, vulnerabilities and maintainability at a glance.
Browse issues and move through details quickly, from one native workspace.
Switch between projects and manage SonarQube server connections.
Export reports for review and AI-assisted analysis.
A focused desktop application that respects macOS workflows.
Drill into code smells, bugs and security findings by project.
Browse the latest installers, release notes and available licence plans.
SonarDesk is a focused native macOS companion for developers and teams using SonarQube. See project health, quality gates, bugs, vulnerabilities, code smells and measures in one fast desktop workspace.
+ +Direct download for macOS · Secure licence activation · Cancel anytime
+SonarDesk keeps the information you check most often close at hand, without replacing SonarQube or changing your existing workflow.
Review configured projects, quality gate state and important measures from a clean Mac dashboard.
Open bugs, vulnerabilities and code smells to see the context you need before switching back to the codebase.
Work through issue lists with practical filters and server-side pagination rather than fighting a giant browser view.
Keep the SonarQube environments you work with available from one desktop application.
SonarQube access tokens are stored in the macOS Keychain. SonarDesk respects the permissions of the token you provide.
A purpose-built macOS interface with familiar navigation, desktop behaviour and a focused experience for engineering teams.
SonarDesk is a desktop companion, not a replacement. It connects to your SonarQube server using your credentials and presents the project and issue information you need for everyday monitoring.
Every plan includes the full SonarDesk application. Professional increases the activation allowance for people working across multiple Macs.
or £2.99 monthly
or £4.99 monthly
Download the latest signed SonarDesk release for macOS, review what changed, verify the package checksum and browse previous versions from one dedicated release centre.
Try SonarDesk for seven days and connect it to your existing SonarQube environment.
Personal and Professional licensing for a native macOS SonarQube workflow.
Or £39.99 per year
Or £79.99 per year
Final billing options and terms are shown by the existing licensing checkout.
Choose Personal or Professional. Secure checkout and licence activation through ABSDEV.
or £4.99 monthly
or £8.99 monthly
Final billing terms and trial availability are confirmed during checkout.
Download the latest macOS release or view available plans.