*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Outfit,system-ui,sans-serif;background:#f5f8f2;color:#233527}a{text-decoration:none;color:inherit}button,input,textarea{font:inherit}button{cursor:pointer}.portal-kicker{color:#739168;font-size:10px;font-weight:800;letter-spacing:.16em}.portal-logo{font-size:28px;font-weight:900;letter-spacing:-.09em;color:#fff}.portal-logo span{color:#b8ff4d}.portal-shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}.portal-sidebar{position:sticky;top:0;min-height:100vh;height:100vh;background:#142119;color:#fff;padding:30px 17px;display:flex;flex-direction:column}.portal-sidebar .portal-logo{padding:0 12px 30px;border-bottom:1px solid #354538}.portal-sidebar-label{font-size:10px;letter-spacing:.16em;color:#839787;margin:33px 12px 12px}.portal-sidebar nav{display:grid;gap:5px}.portal-sidebar nav a{display:flex;align-items:center;gap:11px;padding:13px 14px;border-radius:9px;color:#b7c6b8;font-size:13px;font-weight:700}.portal-sidebar nav a:hover{background:#293d2e;color:#fff}.portal-sidebar nav i{width:18px;color:#b3e776}.portal-sidebar-bottom{display:flex;gap:9px;align-items:center;margin-top:auto;border-top:1px solid #354538;padding-top:17px;min-width:0}.portal-user-avatar{display:grid;place-items:center;width:34px;height:34px;flex:none;border-radius:9px;background:#c8fa81;color:#162719;font-weight:900}.portal-sidebar-bottom div{min-width:0;flex:1}.portal-sidebar-bottom strong,.portal-sidebar-bottom small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-sidebar-bottom strong{font-size:11px}.portal-sidebar-bottom small{color:#8da390;font-size:10px;margin-top:3px}.portal-sidebar-bottom>a{color:#a5c697}.portal-main{width:100%;max-width:1450px;margin:auto;padding:35px clamp(20px,4vw,64px) 70px;min-width:0}.portal-header{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:28px}.portal-header h1{font-size:clamp(29px,3.5vw,44px);letter-spacing:-.055em;line-height:1.05;margin:8px 0}.portal-header h1 span{color:#79b53d}.portal-header p{font-size:13px;color:#809080}.portal-logout{font-size:12px;font-weight:800;color:#5c755a}.portal-project-select{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:18px}.portal-project-select>span{font-size:10px;letter-spacing:.14em;color:#82947f;font-weight:800;margin-right:8px}.portal-project-select a{border:1px solid #dbe6d4;border-radius:8px;background:#fff;padding:9px 12px;font-size:11px;font-weight:800;color:#526650}.portal-project-select a.active{background:#24442a;border-color:#24442a;color:#fff}.portal-project-hero{display:flex;align-items:center;justify-content:space-between;gap:25px;min-height:210px;padding:32px 37px;border-radius:17px;background:radial-gradient(circle at 75% 40%,#3b6544,#1d3324 54%,#17291e);color:#fff}.portal-project-hero>div:first-child{max-width:590px}.portal-tag{display:inline-flex;padding:6px 10px;background:#c3f985;border-radius:20px;color:#27431f;font-size:10px;font-weight:900}.portal-project-hero small{display:block;color:#a8cca7;font-size:10px;letter-spacing:.15em;margin-top:19px}.portal-project-hero h2{font-size:clamp(29px,3vw,42px);letter-spacing:-.06em;margin:6px 0}.portal-project-hero p{font-size:13px;line-height:1.5;color:#c0d1c1}.portal-progress{display:grid;place-content:center;flex:none;width:130px;height:130px;border:9px solid #bafb6a;border-radius:50%;text-align:center}.portal-progress strong{font-size:31px}.portal-progress span{font-size:10px;color:#c9dccb}.portal-stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin:17px 0 31px}.portal-stat-grid article{padding:18px 20px;border:1px solid #e0e8d9;border-radius:13px;background:#fff}.portal-stat-grid span,.portal-stat-grid strong,.portal-stat-grid small{display:block}.portal-stat-grid span{font-size:10px;color:#789276;font-weight:800;letter-spacing:.1em}.portal-stat-grid strong{font-size:29px;letter-spacing:-.05em;margin:8px 0}.portal-stat-grid small{font-size:11px;color:#8c9b8b}.portal-section{margin-top:17px;padding:23px;border:1px solid #e0e8da;border-radius:14px;background:#fff;scroll-margin-top:20px}.portal-section>header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}.portal-section h2{font-size:22px;letter-spacing:-.04em;margin:5px 0}.portal-section-note{font-size:11px;color:#608556;font-weight:800}.portal-onboarding{display:grid;grid-template-columns:220px minmax(0,1fr);gap:15px}.portal-onboarding nav{display:grid;align-content:start;gap:6px}.portal-onboarding nav a{display:flex;align-items:center;gap:10px;padding:10px;border-radius:9px;color:#627260;font-size:12px;font-weight:700}.portal-onboarding nav a.active{background:#eaf7de;color:#294d26}.portal-onboarding nav b{display:grid;place-items:center;width:28px;height:28px;border-radius:7px;background:#edf1e9;color:#6d8268;font-size:10px}.portal-onboarding nav a.active b{background:#3f712d;color:#fff}.portal-step{min-height:300px;padding:23px;border:1px solid #e7eee4;border-radius:12px;background:#fcfdfa}.portal-step>span{font-size:10px;color:#71945e;letter-spacing:.12em;font-weight:800}.portal-step h3{font-size:20px;letter-spacing:-.04em;margin:9px 0 19px}.portal-step form,.portal-inline-form{display:grid;gap:13px}.portal-step label,.portal-inline-form label,.portal-login-form label,.portal-password-card label{display:grid;gap:7px;font-size:11px;font-weight:800;color:#50634c}.portal-step input,.portal-step textarea,.portal-inline-form input,.portal-inline-form textarea,.portal-login-form input,.portal-password-card input{width:100%;min-height:43px;padding:11px 12px;border:1px solid #d5e1ce;border-radius:8px;background:#fff;color:#263628;font:inherit;font-size:12px}.portal-step textarea,.portal-inline-form textarea{min-height:85px;resize:vertical}.portal-step input:focus,.portal-step textarea:focus,.portal-inline-form input:focus,.portal-inline-form textarea:focus,.portal-login-form input:focus,.portal-password-card input:focus{outline:3px solid #d2eabb}.portal-step button,.portal-inline-form button,.portal-login-form button,.portal-password-card button{justify-self:start;display:inline-flex;align-items:center;gap:10px;padding:11px 17px;border:0;border-radius:8px;background:#203e25;color:#fff;font-size:12px;font-weight:800}.portal-step button:hover,.portal-inline-form button:hover,.portal-login-form button:hover,.portal-password-card button:hover{background:#3c663c}.portal-onboarding-finish{display:grid;gap:12px;justify-items:start;color:#5d7458;font-size:13px}.portal-onboarding-finish i{font-size:30px;color:#6c9f4f}.portal-onboarding-finish a{color:#336b2e;font-weight:800}.portal-two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.portal-list,.portal-feed{display:grid;gap:9px;margin-top:17px}.portal-list>a{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid #e8eee5;border-radius:9px;font-size:12px;color:#354f33}.portal-list>a>span{flex:1}.portal-list small{display:block;color:#899988;margin-top:3px}.portal-list>p,.portal-feed>p{font-size:12px;color:#8a9b88}.portal-feed article{padding:13px;border:1px solid #e8eee5;border-radius:9px;background:#fbfdfa}.portal-feed small,.portal-feed strong{display:block}.portal-feed small{color:#839582;font-size:10px}.portal-feed strong{font-size:13px;margin:5px 0}.portal-feed p{font-size:12px;line-height:1.55;color:#546951}.portal-chat{max-height:370px;overflow:auto}.portal-chat article.mine{background:#eaf7df}.portal-alert{padding:12px 14px;margin:13px 0;border-radius:8px;background:#fff0ea;color:#9b3c31;font-size:12px}.portal-login{background:#eef4eb}.portal-login-layout{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}.portal-login-brand{display:flex;flex-direction:column;justify-content:space-between;padding:45px clamp(35px,5vw,90px);background:radial-gradient(circle at 80% 40%,#365a3b,#14251a 58%);color:#fff}.portal-login-brand>div>span{font-size:10px;letter-spacing:.18em;color:#c5ef96;font-weight:800}.portal-login-brand h1{font-size:clamp(36px,4vw,62px);letter-spacing:-.07em;line-height:1.03;margin:18px 0}.portal-login-brand h1 em{font-style:normal;color:#c5ff70}.portal-login-brand p{font-size:14px;line-height:1.6;color:#b9cdb9;max-width:400px}.portal-login-brand small{font-size:11px;color:#91a991}.portal-login-form{display:grid;place-items:center;padding:25px}.portal-login-form>div{width:min(420px,100%)}.portal-login-form h2{font-size:42px;letter-spacing:-.06em;margin:8px 0}.portal-login-form h2 span{color:#7bad4c}.portal-login-form p{color:#7b8d78;font-size:13px;margin-bottom:28px}.portal-login-form form,.portal-password-card form{display:grid;gap:17px}.portal-login-form button,.portal-password-card button{width:100%;justify-content:space-between;margin-top:5px}.portal-login-form a:not(.portal-logo){display:inline-block;margin-top:24px;color:#62795b;font-size:12px;font-weight:800}.portal-password-page{display:grid;place-items:center;min-height:100vh;padding:20px;background:#eff5eb}.portal-password-card{width:min(450px,100%);padding:30px;border:1px solid #dce6d7;border-radius:15px;background:#fff}.portal-password-card h1{font-size:31px;letter-spacing:-.05em}.portal-password-card p{color:#7a8d79;font-size:13px;line-height:1.5}
@media(max-width:1000px){.portal-two-col{grid-template-columns:1fr}}@media(max-width:760px){.portal-shell{grid-template-columns:1fr}.portal-sidebar{height:auto;min-height:0;position:static;padding:17px}.portal-sidebar .portal-logo{padding:0 0 12px}.portal-sidebar-label,.portal-sidebar-bottom{display:none}.portal-sidebar nav{display:flex;overflow:auto;margin-top:12px}.portal-sidebar nav a{white-space:nowrap;padding:9px}.portal-main{padding:25px 18px 50px}.portal-login-layout{grid-template-columns:1fr}.portal-login-brand{min-height:245px;padding:26px}.portal-login-brand h1{font-size:35px}.portal-login-brand small{display:none}.portal-login-form{padding:40px 25px}}@media(max-width:600px){.portal-project-hero{padding:24px}.portal-progress{width:95px;height:95px;border-width:6px}.portal-progress strong{font-size:24px}.portal-stat-grid{grid-template-columns:1fr}.portal-onboarding{grid-template-columns:1fr}.portal-onboarding nav{display:flex;overflow:auto}.portal-onboarding nav a span{display:none}.portal-onboarding nav a{padding:5px}.portal-header{align-items:flex-start}.portal-logout{display:none}}



@media(max-width:600px){.portal-shell{grid-template-columns:minmax(0,1fr)}.portal-sidebar,.portal-main{min-width:0;max-width:100%}.portal-header h1{font-size:clamp(27px,8vw,33px);overflow-wrap:anywhere}.portal-header p{overflow-wrap:anywhere}.portal-project-hero{flex-direction:column;align-items:flex-start}.portal-project-hero>div:first-child{min-width:0}.portal-progress{align-self:flex-end;margin-top:-8px}.portal-sidebar nav{max-width:100%;min-width:0}}


@media(max-width:600px){.portal-progress span{display:block;max-width:68px;margin:auto;font-size:8px;line-height:1.15}}


.portal-section-help{font-size:12px;line-height:1.5;color:#798d77;margin:-4px 0 18px}.portal-billing-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-billing-grid select{width:100%;min-height:43px;padding:10px 12px;border:1px solid #d5e1ce;border-radius:8px;background:#fff;color:#263628;font:inherit;font-size:12px}.portal-billing-grid button{grid-column:1/-1}@media(max-width:600px){.portal-billing-grid{grid-template-columns:1fr}}


.portal-password-change{margin-top:22px;padding-top:17px;border-top:1px solid #e6ede2}.portal-password-change summary{cursor:pointer;color:#426b39;font-size:12px;font-weight:800}.portal-password-change form{max-width:500px;margin-top:15px}


.portal-invoice-list{display:grid;gap:8px}
.portal-invoice-list>div{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:12px;border:1px solid #e2ebdc;border-radius:9px;background:#fbfdfa}
.portal-invoice-list>div>span{flex:1;min-width:150px}
.portal-invoice-list strong,.portal-invoice-list small{display:block}
.portal-invoice-list strong{font-size:13px;color:#263c2a}
.portal-invoice-list small{margin-top:3px;font-size:11px;color:#7a8c78}
.portal-invoice-list a{display:inline-flex;align-items:center;justify-content:center;min-width:47px;min-height:36px;padding:7px 10px;border-radius:7px;background:#e9f6df;color:#39652f;font-size:11px;font-weight:800}
/* Ein klarer nächster Schritt und gut bedienbare Formulare */
.portal-skip{position:absolute;left:16px;top:-60px;z-index:1000;padding:12px 16px;border-radius:8px;background:#fff;color:#17391e;font-weight:800}
.portal-skip:focus{top:12px}
.portal-next-step{display:flex;align-items:center;gap:17px;margin:17px 0;padding:20px 23px;border:1px solid #cfe2c0;border-radius:14px;background:#f0f8e9}
.portal-next-icon{display:grid;place-items:center;flex:none;width:46px;height:46px;border-radius:12px;background:#d8efc5;color:#356d29;font-size:17px}
.portal-next-step>div{flex:1;min-width:0}.portal-next-step h2{margin:4px 0;font-size:20px;letter-spacing:-.04em}.portal-next-step p{margin:0;color:#61775c;font-size:13px;line-height:1.5}
.portal-next-step>a{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:10px 15px;border-radius:9px;background:#234627;color:#fff;font-size:13px;font-weight:800;white-space:nowrap}
.portal-next-step>a:hover{background:#3d6935}
.portal-sidebar nav a:focus-visible,.portal-onboarding nav a:focus-visible,.portal-next-step>a:focus-visible,.portal-project-select a:focus-visible,.portal-invoice-list a:focus-visible{outline:3px solid #8ec84b;outline-offset:2px}
.portal-step input,.portal-step textarea,.portal-inline-form input,.portal-inline-form textarea,.portal-login-form input,.portal-password-card input,.portal-billing-grid select{font-size:15px}
.portal-step label,.portal-inline-form label,.portal-login-form label,.portal-password-card label{font-size:13px}
.portal-step button,.portal-inline-form button,.portal-login-form button,.portal-password-card button{min-height:44px;font-size:13px}
@media(max-width:700px){.portal-next-step{align-items:flex-start;flex-wrap:wrap;padding:17px}.portal-next-step>div{flex-basis:calc(100% - 70px)}.portal-next-step>a{width:100%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* Mehrere Firmen unter einem Kundenkonto */
.portal-project-select>a{display:grid;gap:3px;min-width:130px;max-width:230px}
.portal-project-select>a strong{font-size:12px;overflow-wrap:anywhere}
.portal-project-select>a small{font-size:10px;font-weight:600;opacity:.78;overflow-wrap:anywhere}
.portal-project-add{position:relative}
.portal-project-add summary{display:flex;align-items:center;min-height:44px;padding:10px 14px;border:1px dashed #9ab88a;border-radius:9px;background:#eef7e8;color:#2b5928;font-size:12px;font-weight:800;cursor:pointer;list-style:none}
.portal-project-add summary::-webkit-details-marker{display:none}
.portal-project-add summary:focus-visible{outline:3px solid #8ec84b;outline-offset:2px}
.portal-project-add[open]{flex-basis:100%}
.portal-project-add form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:10px;padding:18px;border:1px solid #d8e7d0;border-radius:11px;background:#fff}
.portal-project-add label{display:grid;gap:6px;font-size:13px;font-weight:800;color:#405b3d}
.portal-project-add input,.portal-project-add select{width:100%;min-height:44px;padding:10px 12px;border:1px solid #cfdec7;border-radius:8px;background:#fff;color:#233527;font:inherit;font-size:15px}
.portal-project-add p{grid-column:1/-1;margin:0;color:#647b61;font-size:12px;line-height:1.5}
.portal-project-add button{justify-self:start;min-height:44px;padding:10px 16px;border:0;border-radius:8px;background:#234627;color:#fff;font:inherit;font-size:13px;font-weight:800;cursor:pointer}
@media(max-width:600px){.portal-project-add form{grid-template-columns:1fr}.portal-project-add p{grid-column:auto}.portal-project-select>a{min-width:0;max-width:100%}}

/* Project uploads */
.portal-upload-form{display:grid;gap:12px;margin-bottom:20px}
.portal-upload-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.portal-upload-choices>label{display:flex;align-items:center;gap:10px;min-width:0;padding:12px;border:1px solid #d6e5cf;border-radius:10px;background:#f8fcf5;color:#28542b;cursor:pointer}
.portal-upload-choices>label i{font-size:20px;flex:none}
.portal-upload-choices>label span{display:block;min-width:0;font-size:12px;font-weight:800}
.portal-upload-choices>label small{display:block;margin-top:2px;color:#697d66;font-size:10px;font-weight:500}
.portal-upload-choices input{position:absolute;width:1px;height:1px;opacity:0}
.portal-upload-choices>label:focus-within{outline:3px solid #8ec84b;outline-offset:2px}
.portal-upload-optimize{display:flex;align-items:flex-start;gap:9px;color:#315331;font-size:12px;font-weight:800}
.portal-upload-optimize input{flex:none;margin-top:3px;width:16px;height:16px}
.portal-upload-optimize small{display:block;margin-top:3px;color:#72816f;font-size:11px;font-weight:500;line-height:1.45}
.portal-upload-help{margin:0;color:#72816f;font-size:11px}
.portal-upload-form button{justify-self:start}
.portal-upload-form button:disabled{opacity:.6;cursor:wait}
.portal-upload-status{display:block;color:#315331;font-size:12px;line-height:1.5;overflow-wrap:anywhere}
@media(max-width:700px){.portal-upload-choices{grid-template-columns:1fr}}

/* Clear account exits on desktop and mobile. */
.portal-header-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;flex:none}
.portal-header-actions a{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:9px 12px;border:1px solid #d5e2d0;border-radius:9px;background:#fff;color:#2f5430;font-size:12px;font-weight:800;white-space:nowrap}
.portal-header-actions a:hover{background:#e9f5e1;border-color:#a9c89a}
@media(max-width:760px){.portal-header{flex-wrap:wrap}.portal-header-actions{width:100%}.portal-header-actions a{flex:1}}
@media(max-width:600px){.portal-header-actions .portal-logout{display:inline-flex}}

/* First login guide and persistent messages access */
.portal-first-steps{margin:0 0 20px;padding:24px;border:1px solid #cfe3bd;border-radius:16px;background:#f5fbee;scroll-margin-top:20px}
.portal-first-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.portal-first-heading h2{margin:5px 0;font-size:clamp(22px,3vw,29px);letter-spacing:-.04em}
.portal-first-heading p{margin:0;color:#5d7259;font-size:13px;line-height:1.5}
.portal-intro-skip{border:0;background:transparent;color:#436640;text-decoration:underline;font-size:12px;font-weight:800;min-height:44px}
.portal-first-list{list-style:none;padding:0;margin:21px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.portal-first-list li{display:flex;align-items:center;gap:11px;min-width:0;padding:14px;border:1px solid #dce8d3;border-radius:11px;background:#fff}
.portal-first-list li.current{border-color:#88b968;box-shadow:0 0 0 2px #e1f3d2}
.portal-first-list li>span{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:50%;background:#e9f4e2;color:#326729;font-size:12px;font-weight:900}
.portal-first-list li.done>span{background:#376c31;color:#fff}
.portal-first-list li>div{flex:1;min-width:0}.portal-first-list strong,.portal-first-list small{display:block}.portal-first-list strong{font-size:12px}.portal-first-list small{margin-top:3px;color:#71846e;font-size:11px;line-height:1.4}
.portal-first-list a{padding:9px 10px;border-radius:8px;background:#e9f5df;color:#315e29;font-size:11px;font-weight:800;white-space:nowrap}
.portal-intro-finish{margin-top:16px}.portal-intro-finish button{min-height:44px;padding:10px 15px;border:0;border-radius:9px;background:#234627;color:#fff;font-size:12px;font-weight:800}
.portal-upload-choices .portal-upload-picker{display:grid;align-content:start;gap:9px}.portal-upload-picker>span{font-size:13px;font-weight:800}.portal-upload-picker>span i{margin-right:5px}.portal-upload-picker small{font-size:11px;line-height:1.5}
.portal-upload-choices .portal-upload-picker input[type=file]{position:static;width:100%;height:auto;min-height:44px;opacity:1;padding:7px;border:1px solid #c8dabc;border-radius:8px;background:#fff;color:#2c4e2d;font-size:13px}
.portal-upload-picker input::file-selector-button{min-height:34px;margin-right:10px;padding:5px 9px;border:0;border-radius:6px;background:#234627;color:#fff;font:inherit;font-weight:800}
.portal-chat-fab{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));z-index:80;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:50px;padding:0 17px;border-radius:28px;background:#183b22;color:#fff;box-shadow:0 8px 25px #173c2780;font-size:13px;font-weight:800}
.portal-chat-fab i{font-size:18px}.portal-chat-fab:hover{background:#345e32}.portal-chat-fab:focus-visible{outline:3px solid #baff67;outline-offset:3px}.portal-app{padding-bottom:74px}
@media(max-width:760px){.portal-first-list{grid-template-columns:1fr}.portal-first-heading{flex-direction:column}.portal-chat-fab{right:12px;bottom:max(12px,env(safe-area-inset-bottom))}}
@media(max-width:430px){.portal-chat-fab span{display:none}.portal-chat-fab{width:52px;padding:0}.portal-first-list li{display:grid;grid-template-columns:32px minmax(0,1fr)}.portal-first-list li>a{grid-column:2;justify-self:start}.portal-first-list strong{font-size:13px}}
