:root{--navy:#002840;--blue:#0075b4;--cyan:#23a9df;--ink:#122132;--muted:#68788a;--line:#dbe5eb;--wash:#f4f8fa;--white:#fff;--green:#15956a;--amber:#c47b12;--red:#cc4b4b;--radius:12px;--shadow:0 14px 40px rgba(0,40,64,.08)}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--wash);font:14px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh;display:flex}.sidebar{position:fixed;inset:0 auto 0 0;width:252px;background:linear-gradient(180deg,#002840,#003856);color:#fff;display:flex;flex-direction:column;z-index:40;box-shadow:8px 0 30px rgba(0,40,64,.08)}.brand{height:94px;padding:24px 24px 18px;display:flex;flex-direction:column;gap:8px;border-bottom:1px solid rgba(255,255,255,.1)}.brand img{width:152px;height:45px;object-fit:contain;object-position:left center;filter:brightness(0) invert(1)}.brand span{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.56)}.nav-list{padding:20px 12px;display:flex;flex-direction:column;gap:5px;overflow:auto}.nav-label{font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:rgba(255,255,255,.42);padding:15px 13px 7px}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 13px;border-radius:9px;color:rgba(255,255,255,.72);font-weight:600}.nav-item i{font-style:normal;width:22px;text-align:center;color:var(--cyan);font-size:17px}.nav-item:hover,.nav-item.active{background:rgba(255,255,255,.1);color:#fff}.nav-item.active{box-shadow:inset 3px 0 var(--cyan)}.sidebar-foot{margin-top:auto;padding:17px;border-top:1px solid rgba(255,255,255,.1)}.user-card{display:flex;gap:10px;align-items:center}.avatar{width:35px;height:35px;border-radius:9px;background:var(--cyan);display:grid;place-items:center;font-weight:800}.user-card div{display:flex;flex-direction:column;min-width:0}.user-card strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-card div span{font-size:11px;color:rgba(255,255,255,.55)}.text-button{padding:8px 0 0;color:rgba(255,255,255,.6);background:0;border:0;cursor:pointer;font-size:12px}.main-shell{width:calc(100% - 252px);margin-left:252px;min-height:100vh}.topbar{height:94px;padding:18px 34px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:18px;position:sticky;top:0;z-index:30}.topbar h1{font-size:23px;line-height:1.2;margin:2px 0 0;letter-spacing:-.02em;color:var(--navy)}.eyebrow{margin:0;color:var(--blue);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.16em}.menu-button{display:none;border:0;background:var(--wash);border-radius:8px;width:40px;height:40px}.top-actions{margin-left:auto;display:flex;gap:12px;align-items:center}.date-chip{padding:8px 12px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:12px}.notification-menu{position:relative}.notification-menu summary{list-style:none;width:40px;height:40px;border:1px solid var(--line);border-radius:10px;display:grid;place-items:center;cursor:pointer;position:relative;font-size:20px}.notification-menu summary::-webkit-details-marker{display:none}.notification-menu summary b{position:absolute;right:-4px;top:-5px;background:var(--red);color:#fff;border-radius:9px;font-size:9px;line-height:17px;min-width:17px;text-align:center}.notification-panel{position:absolute;right:0;top:48px;width:330px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:10px;max-height:430px;overflow:auto}.notification-panel h3{margin:4px 8px 8px}.notice{display:flex;flex-direction:column;padding:10px;border-radius:8px}.notice:hover,.notice.unread{background:#eef8fc}.notice span,.notice small{color:var(--muted);font-size:12px}.content-shell{padding:28px 34px 50px;max-width:1600px;margin:0 auto}.alert{margin-bottom:18px;padding:12px 15px;border-radius:10px;border:1px solid}.alert.success{color:#0d7250;background:#e8f8f1;border-color:#bce8d6}.alert.error{color:#9e3131;background:#fff0f0;border-color:#f1caca}.alert ul{margin:5px 0 0 18px;padding:0}.page-actions{display:flex;gap:9px;justify-content:flex-end;margin:-2px 0 18px;flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:38px;padding:8px 14px;border-radius:9px;border:1px solid var(--blue);background:var(--blue);color:#fff;font-weight:700;cursor:pointer}.button:hover{background:var(--navy);border-color:var(--navy)}.button.secondary{background:#fff;color:var(--navy);border-color:var(--line)}.button.danger{background:#fff5f5;color:var(--red);border-color:#efc8c8}.button.small{min-height:31px;padding:5px 10px;font-size:12px}.button.ghost{border:0;background:transparent;color:var(--blue);padding:4px}.grid{display:grid;gap:18px}.grid.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 4px 18px rgba(0,40,64,.025);padding:20px;min-width:0}.card.flush{padding:0;overflow:hidden}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.card-head h2,.card h2{font-size:16px;margin:0;color:var(--navy)}.card-head p{margin:3px 0 0;color:var(--muted);font-size:12px}.metric-card{padding:21px;position:relative;overflow:hidden}.metric-card:after{content:"";position:absolute;width:80px;height:80px;border-radius:50%;right:-30px;top:-30px;background:rgba(35,169,223,.09)}.metric-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:700}.metric-value{font-size:26px;font-weight:800;color:var(--navy);margin-top:8px;letter-spacing:-.03em}.metric-note{font-size:11px;color:var(--muted);margin-top:6px}.section-gap{margin-top:18px}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse}.data-table th{padding:11px 14px;background:#f7fafb;color:var(--muted);text-align:left;font-size:10px;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--line);white-space:nowrap}.data-table td{padding:13px 14px;border-bottom:1px solid #edf2f4;vertical-align:middle}.data-table tr:last-child td{border-bottom:0}.data-table tr:hover td{background:#fbfdfe}.data-table strong{color:var(--navy)}.subtle{color:var(--muted);font-size:12px}.status{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:99px;background:#eef3f6;color:#526776;font-size:10px;text-transform:capitalize;font-weight:800;white-space:nowrap}.status:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.status.paid,.status.approved,.status.active,.status.live,.status.verified,.status.on_track,.status.accepted,.status.completed,.status.released{background:#e6f7f0;color:#11825b}.status.overdue,.status.blocked,.status.rejected,.status.void,.status.cancelled,.status.expired{background:#fff0f0;color:#bc4141}.status.pending,.status.planned,.status.in_progress,.status.partially_paid,.status.client_review,.status.sent,.status.in_qa,.status.at_risk{background:#fff7e7;color:#aa6a0b}.progress{height:7px;background:#e7eef2;border-radius:9px;overflow:hidden}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--cyan));border-radius:9px}.project-row{display:grid;grid-template-columns:minmax(160px,1.5fr) minmax(150px,1fr) 90px 90px;gap:16px;align-items:center;padding:13px 0;border-top:1px solid #edf2f4}.project-row:first-of-type{border-top:0}.project-row h3{font-size:13px;margin:0}.project-row p{margin:2px 0 0}.quick-actions{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.quick-action{padding:14px;border:1px solid var(--line);border-radius:10px;background:#fff;display:flex;gap:10px;align-items:center;font-weight:700;color:var(--navy)}.quick-action i{font-style:normal;width:29px;height:29px;border-radius:8px;background:#eaf7fc;color:var(--blue);display:grid;place-items:center}.empty{color:var(--muted);padding:12px 0;margin:0}.filter-bar{display:flex;gap:10px;align-items:center;margin-bottom:15px}.filter-bar form{display:flex;gap:8px;flex:1}.input,select,textarea{width:100%;border:1px solid #cfdde4;border-radius:8px;background:#fff;padding:9px 11px;color:var(--ink);outline:none}.input:focus,select:focus,textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(35,169,223,.12)}textarea{min-height:96px;resize:vertical}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field label{font-size:11px;text-transform:uppercase;letter-spacing:.07em;font-weight:800;color:#526776}.field small{color:var(--muted)}.form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}.modal{border:0;border-radius:14px;padding:0;width:min(720px,calc(100% - 28px));box-shadow:0 30px 100px rgba(0,40,64,.25)}.modal::backdrop{background:rgba(0,30,48,.58)}.modal-inner{padding:24px}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-head h2{margin:0;color:var(--navy)}.modal-close{border:0;background:#eef3f6;width:32px;height:32px;border-radius:8px;cursor:pointer}.line-item{display:grid;grid-template-columns:1fr 90px 160px 38px;gap:8px;margin-bottom:8px}.line-total{display:flex;justify-content:flex-end;gap:20px;font-size:20px;font-weight:800;color:var(--navy);padding:15px 0}.detail-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:18px}.detail-head h2{font-size:22px;margin:0;color:var(--navy)}.detail-meta{display:flex;gap:18px;flex-wrap:wrap}.detail-meta div{display:flex;flex-direction:column}.detail-meta span{font-size:10px;text-transform:uppercase;color:var(--muted);letter-spacing:.08em}.detail-meta strong{font-size:13px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:0 -20px 18px;padding:0 20px;overflow:auto}.tabs a{padding:10px 12px;font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}.tabs a.active{color:var(--blue);border-bottom:2px solid var(--blue)}.timeline{position:relative;padding-left:20px}.timeline:before{content:"";position:absolute;left:4px;top:6px;bottom:5px;width:1px;background:var(--line)}.timeline-item{position:relative;margin-bottom:15px}.timeline-item:before{content:"";position:absolute;left:-20px;top:5px;width:9px;height:9px;background:var(--cyan);border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--cyan)}.timeline-item h4{margin:0;font-size:13px}.timeline-item p{margin:3px 0;color:var(--muted);font-size:12px}.kanban{display:grid;grid-template-columns:repeat(5,minmax(220px,1fr));gap:12px;overflow:auto;padding-bottom:6px}.kanban-col{background:#f5f8fa;border:1px solid var(--line);border-radius:10px;padding:10px;min-height:180px}.kanban-col h3{margin:2px 4px 10px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.task-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px;margin-bottom:8px}.task-card strong{font-size:12px}.task-card p{margin:4px 0;color:var(--muted);font-size:11px}.pagination{display:flex;gap:4px;padding:14px}.pagination a,.pagination span{padding:6px 10px;border:1px solid var(--line);border-radius:7px;font-size:12px}.login-page{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;background:#eff6f9}.login-brand{padding:8vw;background:linear-gradient(145deg,rgba(0,40,64,.96),rgba(0,117,180,.9)),url('../images/riseup-logo.png') center/80% no-repeat;color:#fff;display:flex;flex-direction:column;justify-content:space-between}.login-brand img{width:260px;filter:brightness(0) invert(1)}.login-brand h1{font-size:clamp(36px,5vw,64px);line-height:1;max-width:620px;letter-spacing:-.045em}.login-brand p{max-width:550px;color:rgba(255,255,255,.72);font-size:17px}.login-panel{display:grid;place-items:center;padding:30px}.login-card{width:min(420px,100%);background:#fff;padding:35px;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.login-card h2{font-size:26px;color:var(--navy);margin:0}.login-card>p{color:var(--muted);margin:7px 0 24px}.login-card .field{margin-bottom:14px}.login-card .button{width:100%;margin-top:8px}.document-preview{background:#e7edf0;padding:25px;border-radius:12px;overflow:auto}.paper{background:#fff;width:210mm;min-height:297mm;margin:auto;padding:18mm;box-shadow:0 10px 30px rgba(0,40,64,.12)}
.action-heading{text-align:center!important}.invoice-actions,.record-actions{display:flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}.invoice-actions form,.record-actions form{display:inline-flex;margin:0}.icon-action{width:34px;height:34px;padding:0;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--navy);display:inline-grid;place-items:center;cursor:pointer;transition:.16s ease}.icon-action:hover{color:var(--blue);border-color:var(--cyan);background:#f2fbfe;transform:translateY(-1px)}.icon-action svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.icon-action.danger{color:var(--red);border-color:#efc8c8;background:#fff8f8}.icon-action.danger:hover{background:#fff0f0;border-color:var(--red)}.icon-action.disabled{opacity:.4;cursor:not-allowed;pointer-events:none;transform:none}
.client-note-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.client-note{border:1px solid var(--line);border-radius:10px;background:#fbfdfe;padding:15px;min-width:0}.client-note-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #e8eff3}.client-note-head h3{margin:0;color:var(--navy);font-size:13px}.client-note-head span{display:block;margin-top:2px;color:var(--muted);font-size:10px}.client-note-actions{display:flex;align-items:center;gap:5px}.client-note-actions form{display:inline-flex;margin:0}.client-note-body{padding-top:11px;color:var(--ink);font:12px/1.65 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;white-space:normal;overflow-wrap:anywhere}.credential-warning{margin:13px 0 0;color:var(--muted);font-size:11px}
@media(max-width:1150px){.grid.metrics{grid-template-columns:repeat(2,1fr)}.quick-actions{grid-template-columns:repeat(3,1fr)}.grid.three{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}.main-shell{width:100%;margin-left:0}.menu-button{display:block}.topbar{padding:16px 18px}.content-shell{padding:20px 16px 40px}.date-chip{display:none}.grid.two,.grid.three{grid-template-columns:1fr}.project-row{grid-template-columns:1fr 90px}.project-row>*:nth-child(2){display:none}.form-grid,.form-grid.three{grid-template-columns:1fr}.field.full{grid-column:auto}.line-item{grid-template-columns:1fr 70px 115px 34px}.quick-actions{grid-template-columns:repeat(2,1fr)}.client-note-list{grid-template-columns:1fr}.client-note-head{flex-direction:column}.login-page{grid-template-columns:1fr}.login-brand{display:none}.notification-panel{right:-10px;width:min(330px,calc(100vw - 24px))}}

.line-item{grid-template-columns:minmax(140px,.75fr) minmax(240px,1.6fr) 80px 150px 38px;align-items:start}.line-item-details{min-height:112px;line-height:1.5}
@media(max-width:820px){.line-item{grid-template-columns:1fr 1fr}.line-item-details{grid-column:1/-1}.line-item .button{grid-column:2;justify-self:end}}
@media(max-width:520px){.grid.metrics{grid-template-columns:1fr}.quick-actions{grid-template-columns:1fr}.topbar h1{font-size:18px}.detail-head{flex-direction:column}.metric-value{font-size:23px}}
.top-search{width:220px}.top-search .input{padding:8px 11px;background:#f7fafb}@media(max-width:1050px){.top-search{display:none}}
/* PPh gross-up controls */
.pph-option{margin-top:16px;padding:14px 16px;border:1px solid #cfe2eb;border-radius:10px;background:#f5fbfd}.pph-option>label{display:flex;gap:11px;align-items:flex-start;cursor:pointer}.pph-option input[type=checkbox]{width:18px;height:18px;margin-top:2px;accent-color:var(--blue)}.pph-option span{display:flex;flex-direction:column;gap:2px}.pph-option strong{color:var(--navy)}.pph-option small{color:var(--muted)}.line-summary{margin:14px 0 0 auto;width:min(420px,100%);color:var(--ink)}.line-summary>div{display:flex;justify-content:space-between;gap:20px;padding:7px 0}.line-summary>div:not(:last-child){border-bottom:1px solid var(--line)}.line-summary .line-total{font-size:20px;font-weight:800;color:var(--navy);padding:12px 0 0}
.invoice-summary-meta{display:grid;grid-template-columns:repeat(6,minmax(150px,1fr));column-gap:32px;row-gap:18px;width:100%}.invoice-summary-meta>div{min-width:0;gap:3px}.invoice-summary-meta span{line-height:1.35}.invoice-summary-meta strong{font-size:15px;white-space:nowrap}@media(max-width:1250px){.invoice-summary-meta{grid-template-columns:repeat(3,minmax(150px,1fr))}}@media(max-width:720px){.invoice-summary-meta{grid-template-columns:repeat(2,minmax(130px,1fr));column-gap:20px}}@media(max-width:420px){.invoice-summary-meta{grid-template-columns:1fr}}
