:root{--forest: #1b3a2d;--forest-light: #2a5040;--gold: #b8914a;--stone: #d4c9b4;--wheat: #faf7f2;--limestone: #f2ebd9;--mist: #e8f0ec;--smoke: #4a4038;--bg: #14261e;--bg-elevated: #232b25;--bg-row: #1e2620;--border: #3a5648;--text: var(--wheat);--text-muted: #a8b5ad;--accent: var(--gold);--accent-soft: rgba(184, 145, 74, .16);--ok: #6fbf8b;--warn: #d4a86a;--bad: #d4726a;--font-sans: "DM Sans", system-ui, sans-serif;--font-display: "Cormorant Garamond", Georgia, serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font-sans);font-weight:300;line-height:1.8;letter-spacing:.02em;background:radial-gradient(ellipse 80% 50% at 10% -10%,rgba(184,145,74,.14),transparent 55%),radial-gradient(ellipse 60% 40% at 100% 0%,rgba(42,80,64,.35),transparent 50%),var(--bg);color:var(--text)}button,input{font:inherit;font-weight:400;letter-spacing:normal;line-height:1.4}a{color:var(--accent)}a:hover{color:var(--limestone)}.app-shell{margin:0 auto;padding:5rem 5rem 3rem}.brand-row{display:flex;align-items:center;gap:.75rem}.brand-mark{flex-shrink:0;color:var(--wheat)}.brand{font-family:var(--font-display);font-size:2rem;font-weight:400;letter-spacing:.02em;margin:0;line-height:1.1}.brand span{color:var(--accent)}.subtitle{margin:.35rem 0 0;color:var(--text-muted);font-size:.9rem;font-weight:300}.topbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:7rem}.tabs{display:flex;gap:.35rem;border-bottom:1px solid var(--border);margin-bottom:1rem}.tab{background:transparent;border:none;color:var(--text-muted);padding:.65rem 1rem;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:400}.tab.active{color:var(--text);border-bottom-color:var(--accent);font-weight:500}.panel-actions{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}.opportunity-groups{display:flex;flex-direction:column;gap:1.5rem}.opportunity-groups .opportunities-table{table-layout:fixed;width:100%}.opportunity-groups .opportunities-table .col-pub-date,.opportunity-groups .opportunities-table .col-auction-date{width:7.5rem}.editable-cell{position:relative;display:block;min-width:0}.editable-cell-editing{padding-right:1rem}.editable-cell-display{min-width:0}.editable-cell-btn{position:absolute;top:0;right:0;display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;margin:0;padding:0;border:none;border-radius:3px;background:transparent;color:var(--text-muted);cursor:pointer;opacity:.55;transition:opacity .12s ease,color .12s ease,background .12s ease}.editable-cell:hover .editable-cell-btn,.editable-cell:focus-within .editable-cell-btn,.editable-cell-btn:focus-visible{opacity:1}.editable-cell-btn:hover,.editable-cell-btn:focus-visible{color:var(--accent);background:var(--accent-soft)}.edit-mode-toggle{position:relative;width:80px;height:40px;margin-left:auto;flex-shrink:0;--toggle-off: var(--forest);--toggle-on: var(--limestone);--knob: var(--bg);--pen-off: var(--stone);--pen-on: var(--gold)}.edit-mode-switch{position:absolute;top:0;right:0;bottom:0;left:0;background-color:var(--toggle-off);border-radius:20px;cursor:pointer;border:2px solid var(--toggle-off)}.edit-mode-checkbox{position:absolute;display:none}.edit-mode-slider{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:20px;transition:background-color .3s}.edit-mode-checkbox:checked~.edit-mode-slider{background-color:var(--toggle-on)}.edit-mode-knob{position:absolute;top:6px;left:6px;width:24px;height:24px;border-radius:50%;background-color:var(--knob);color:var(--pen-off);display:inline-flex;align-items:center;justify-content:center;transition:transform .3s,background-color .3s,color .3s}.edit-mode-checkbox:checked~.edit-mode-slider .edit-mode-knob{transform:translate(40px);background-color:var(--forest);color:var(--pen-on)}.edit-mode-switch:focus-within{outline:2px solid var(--accent);outline-offset:2px}.edit-popover{position:fixed;z-index:80;width:min(280px,calc(100vw - 16px));padding:.75rem;border:1px solid var(--border);border-radius:6px;background:var(--bg-elevated);box-shadow:0 10px 28px #00000059}.edit-popover-title{margin:0 0 .55rem;font-family:var(--font-display);font-size:1.05rem;font-weight:400;color:var(--text)}.edit-popover-fields{display:flex;flex-direction:column;gap:.45rem}.edit-popover-actions{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.65rem}.edit-field{display:flex;flex-direction:column;gap:.2rem;font-size:.8rem;color:var(--text-muted)}.edit-field-hint{font-size:.75rem;line-height:1.35}.cell-edit-input{width:100%;max-width:none;padding:.3rem .4rem;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text)}.cell-edit-textarea{resize:vertical;min-height:4.5rem;line-height:1.35}.cell-edit-btn{padding:.2rem .55rem;font-size:.8rem}.cell-edit-error{margin:.45rem 0 0;font-size:.75rem}.opportunity-groups .opportunities-table .col-pub-name{width:auto}.opportunity-groups .opportunities-table .col-canton{width:4.5rem}.opportunity-groups .opportunities-table .col-federal,.opportunity-groups .opportunities-table .col-cantonal,.opportunity-groups .opportunities-table .col-memo,.opportunity-groups .opportunities-table .col-valuation-report{width:5.5rem}.opportunity-groups .opportunities-table .col-map,.opportunity-groups .opportunities-table .col-valuation{width:9rem}.memo-generate-btn{padding:.15rem .4rem;font-size:.8rem}.opportunity-groups .opportunities-table .col-status{width:12.5rem}.opportunity-groups .opportunities-table th{white-space:nowrap}.opportunity-groups .opportunities-table td{overflow-wrap:anywhere}.opportunity-group-title{margin:0 0 .75rem;font-family:var(--font-display);font-size:1.25rem;font-weight:400;letter-spacing:.02em;color:var(--text)}details.opportunity-group>summary.opportunity-group-title{cursor:pointer;list-style:none;display:flex;align-items:center;gap:.5rem;-webkit-user-select:none;user-select:none}details.opportunity-group>summary.opportunity-group-title::-webkit-details-marker{display:none}details.opportunity-group>summary.opportunity-group-title:before{content:"▸";color:var(--accent);font-size:.85rem;line-height:1}details.opportunity-group[open]>summary.opportunity-group-title:before{content:"▾"}details.opportunity-group>summary.opportunity-group-title:hover{color:var(--accent)}.test-run-bar{display:flex;align-items:flex-end;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}.test-run-field{display:flex;flex-direction:column;gap:.35rem;flex:1 1 20rem;min-width:12rem}.test-run-field input{width:100%;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);padding:.5rem .75rem;border-radius:4px;font-family:var(--font-mono);font-size:.85rem}.test-run-field input:focus{border-color:var(--accent);outline:none}.test-run-field input:disabled{opacity:.55}.schedule-editor{display:flex;flex-direction:column;gap:.75rem;max-width:28rem}.schedule-row{display:flex;align-items:flex-end;gap:.75rem}.filter-field{display:inline-flex;align-items:center;gap:.45rem}.filter-label{font-family:var(--font-sans);font-size:.625rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:var(--text-muted)}.filter-field select{border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);padding:.45rem .7rem;border-radius:4px;font-family:var(--font-mono);font-size:.8rem;cursor:pointer}.filter-field select:hover,.filter-field select:focus{border-color:var(--accent);outline:none}.btn{border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);padding:.5rem .9rem;border-radius:4px;cursor:pointer}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:500}.btn-primary:hover:not(:disabled){background:#b8914a3d;border-color:var(--accent)}.btn-ghost{background:transparent}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:6px;background:var(--bg-elevated)}table{width:100%;border-collapse:collapse;font-size:.875rem;font-weight:400;line-height:1.45;letter-spacing:normal}th,td{text-align:left;padding:.65rem .75rem;border-bottom:1px solid var(--border);vertical-align:top}th{font-family:var(--font-sans);font-size:.625rem;text-transform:uppercase;letter-spacing:.2em;color:var(--text-muted);font-weight:500;background:#00000038}tr:last-child td{border-bottom:none}tr:nth-child(2n) td{background:var(--bg-row)}.mono{font-family:var(--font-mono);font-size:.8rem;letter-spacing:normal}.muted{color:var(--text-muted)}.pill{display:inline-block;font-family:var(--font-sans);font-size:.7rem;font-weight:500;padding:.15rem .45rem;border-radius:3px;border:1px solid var(--border);letter-spacing:.04em}.pill-ok{color:var(--ok);border-color:#6fbf8b66}.pill-warn{color:var(--warn);border-color:#d4a86a66}.pill-bad{color:var(--bad);border-color:#d4726a66}.pill-muted{color:var(--text-muted)}button.pill-clickable{cursor:pointer;background:transparent;font:inherit;line-height:inherit}button.pill-clickable:hover,button.pill-clickable:focus-visible{filter:brightness(1.15);outline:none}button.pill-clickable:focus-visible{box-shadow:0 0 0 2px var(--accent)}.logs-popover{width:min(420px,calc(100vw - 16px))}.logs-popover-body{margin:0;max-height:min(40vh,280px);overflow:auto;white-space:pre-wrap;word-break:break-word;padding:.5rem;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--bad);font-size:.75rem;line-height:1.45}.login-page{min-height:100vh;display:grid;place-items:center;padding:3rem 1.5rem 1.5rem}.login-card{width:min(380px,100%);background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;padding:1.75rem;box-shadow:0 12px 40px #00000059}.login-card .brand-row{margin-bottom:.35rem}.login-card h1{font-family:var(--font-display);font-size:1.85rem;font-weight:400;letter-spacing:.02em;margin:0}.login-card p{margin:0 0 1.25rem;color:var(--text-muted);font-size:.9rem}.field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.9rem}.field label{font-size:.625rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:var(--text-muted)}.field input{background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);padding:.55rem .65rem}.field input:focus{border-color:var(--accent);outline:none}.error{color:var(--bad);font-size:.85rem;margin:0 0 .75rem}.status-line{font-size:.85rem;color:var(--text-muted)}.empty{padding:2rem;text-align:center;color:var(--text-muted)}.settings-wrap{position:relative}.settings-popover{position:absolute;top:calc(100% + .5rem);right:0;z-index:20;width:min(26rem,calc(100vw - 2.5rem));padding:1rem;border:1px solid var(--border);border-radius:6px;background:var(--bg-elevated);box-shadow:0 8px 24px #00000059;max-height:min(80vh,36rem);overflow-y:auto}.settings-field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.5rem}.settings-field input,.settings-field select{width:100%;border:1px solid var(--border);background:var(--bg);color:var(--text);padding:.5rem .65rem;border-radius:4px;font-family:var(--font-mono);font-size:.85rem}.settings-field select{font-family:var(--font-sans)}.settings-field input:focus,.settings-field select:focus{border-color:var(--accent);outline:none}.settings-hint{font-size:.8rem;margin:0 0 .75rem}.settings-ok{color:var(--ok);font-size:.85rem;margin:0 0 .75rem}.topbar-actions{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}@media(max-width:768px){.app-shell{padding:1.25rem 1rem 2rem}.topbar{flex-direction:column;align-items:stretch;margin-bottom:2rem;gap:1.25rem}.topbar-actions{justify-content:space-between;width:100%}.brand{font-size:1.65rem}.tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;gap:0;margin-left:-1rem;margin-right:-1rem;padding-left:1rem;padding-right:1rem}.tabs::-webkit-scrollbar{display:none}.tab{flex-shrink:0;white-space:nowrap;padding:.55rem .85rem;font-size:.9rem}.panel-actions{flex-direction:column;align-items:stretch}.panel-actions .btn,.panel-actions .filter-field,.panel-actions .status-line{width:100%}.panel-actions .edit-mode-toggle{margin-left:0;align-self:flex-end}.filter-field{flex-direction:column;align-items:stretch}.filter-field select{width:100%}.test-run-bar{flex-direction:column;align-items:stretch}.test-run-field{flex:1 1 auto;min-width:0}.schedule-row{flex-direction:column;align-items:stretch}.schedule-row .btn{width:100%}.table-wrap{overflow-x:visible;border:none;background:transparent}.table-wrap table{display:block}.table-wrap thead{display:none}.table-wrap tbody{display:flex;flex-direction:column;gap:.75rem}.table-wrap tbody tr{display:block;border:1px solid var(--border);border-radius:6px;background:var(--bg-elevated);padding:.85rem 1rem}.table-wrap tbody tr:nth-child(2n){background:var(--bg-elevated)}.table-wrap td{display:grid;grid-template-columns:minmax(5.5rem,38%) 1fr;gap:.65rem;align-items:start;padding:.45rem 0;border-bottom:none;background:transparent!important;word-break:break-word}.table-wrap td:before{content:attr(data-label);font-family:var(--font-sans);font-size:.625rem;text-transform:uppercase;letter-spacing:.2em;color:var(--text-muted);font-weight:500;padding-top:.15rem}.table-wrap td:last-child{padding-bottom:0}.table-wrap td:first-child{padding-top:0}.settings-popover{position:fixed;top:auto;bottom:0;left:0;right:0;width:100%;max-width:none;border-radius:12px 12px 0 0;padding:1.25rem 1rem calc(1.25rem + env(safe-area-inset-bottom,0px))}}@media(min-width:769px)and (max-width:1024px){.app-shell{padding:2.5rem 2rem 2rem}.topbar{margin-bottom:4rem}}
