:root{--color-bg: #0d0d0d;--color-fg: #e8e8e8;--color-1: #c0392b;--color-2: #2980b9;--color-3: #27ae60;--font-mono: "Courier New", Courier, monospace;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 2rem;--spacing-xl: 4rem}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{background-color:var(--color-bg);color:var(--color-fg);font-family:var(--font-mono);line-height:1.6;min-height:100vh}a{color:var(--color-2);text-decoration:none}a:hover{text-decoration:underline}button{background:var(--color-1);border:2px solid var(--color-1);color:var(--color-fg);cursor:pointer;font-family:var(--font-mono);font-size:1rem;padding:var(--spacing-xs) var(--spacing-sm)}button:disabled{opacity:.45;cursor:default}button:hover:not(:disabled){background:var(--color-bg);color:var(--color-1)}button.btn-secondary{background:var(--color-2);border-color:var(--color-2)}button.btn-secondary:hover:not(:disabled){background:var(--color-bg);color:var(--color-2)}button.btn-inverse{background:var(--color-fg);color:var(--color-bg);border-color:var(--color-fg)}button.btn-inverse:hover:not(:disabled){background:var(--color-bg);color:var(--color-fg)}input,textarea,select{background:var(--color-bg);border:1px solid var(--color-fg);color:var(--color-fg);font-family:var(--font-mono);font-size:1rem;padding:var(--spacing-xs) var(--spacing-sm)}input:focus,textarea:focus,select:focus{border-color:var(--color-2);outline:none}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.2;margin-bottom:var(--spacing-sm);text-transform:lowercase}p{margin-bottom:var(--spacing-sm)}#root{display:flex;flex-direction:column;min-height:100vh}@media(max-width:767px){button{min-height:44px}}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);border-bottom:2px solid var(--color-fg)}.brand{font-weight:700;font-size:1.4rem;letter-spacing:.02em}.brand .glyph{color:var(--color-1)}.nav-links{display:flex;gap:var(--spacing-md);flex-wrap:wrap}.nav-links a{color:var(--color-fg);border:2px solid transparent;padding:var(--spacing-xs) var(--spacing-sm)}.nav-links a:hover,.nav-links a.active{border-color:var(--color-fg);text-decoration:none}main.app-main{flex:1;max-width:1200px;width:100%;margin:0 auto;padding:var(--spacing-lg)}.panel{border:2px solid var(--color-fg);padding:var(--spacing-md);margin-bottom:var(--spacing-lg)}.panel h2{border-bottom:2px solid var(--color-fg);padding-bottom:var(--spacing-xs);margin-bottom:var(--spacing-md)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--spacing-md)}.card{border:2px solid var(--color-fg);padding:var(--spacing-sm);display:flex;flex-direction:column;gap:var(--spacing-xs)}.card .card-title{font-weight:700;overflow-wrap:anywhere}.card .card-meta{font-size:.85rem;color:color-mix(in srgb,var(--color-fg) 65%,var(--color-bg))}.card .card-actions{display:flex;gap:var(--spacing-xs);margin-top:auto;padding-top:var(--spacing-xs)}.dropzone{display:flex;gap:var(--spacing-sm);align-items:center;flex-wrap:wrap;padding:var(--spacing-md);border:2px dashed var(--color-fg);transition:border-color .15s,background-color .15s}.dropzone.drag-over{border-color:var(--color-2);background-color:color-mix(in srgb,var(--color-2) 12%,transparent)}.dropzone input[type=text]{flex:1;min-width:160px}.dropzone input[type=file]{color:var(--color-fg);font-family:var(--font-mono)}.hint{color:color-mix(in srgb,var(--color-fg) 65%,var(--color-bg));font-size:.85rem}.error-banner{border:2px solid var(--color-1);color:var(--color-1);padding:var(--spacing-sm);margin-bottom:var(--spacing-md)}.field-row{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm);flex-wrap:wrap}.field-row label{min-width:140px}.field-row select,.field-row input{flex:1;min-width:160px}.annotate-canvas{position:relative;display:inline-block;border:2px solid var(--color-fg);cursor:crosshair;max-width:100%}.annotate-canvas img{display:block;max-width:100%;height:auto;-webkit-user-select:none;user-select:none;pointer-events:none}.identifier-pin{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;gap:.3rem;cursor:grab}.identifier-pin:active{cursor:grabbing}.identifier-pin .dot{width:12px;height:12px;border-radius:50%;background:var(--color-2);border:2px solid var(--color-bg);box-shadow:0 0 0 1px var(--color-2)}.identifier-pin.selected .dot{background:var(--color-1);box-shadow:0 0 0 1px var(--color-1)}.identifier-pin .tag{background:var(--color-bg);border:1px solid var(--color-2);color:var(--color-2);font-size:.75rem;padding:.05rem .3rem;white-space:nowrap}.identifier-pin.selected .tag{border-color:var(--color-1);color:var(--color-1)}.pending-pin-form{position:absolute;transform:translate(-50%,10px);display:flex;gap:var(--spacing-xs);background:var(--color-bg);border:2px solid var(--color-2);padding:var(--spacing-xs);z-index:10}.pending-pin-form input{width:12rem}.identifier-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.identifier-row{display:flex;align-items:center;gap:var(--spacing-sm);border:1px solid var(--color-fg);padding:var(--spacing-xs) var(--spacing-sm)}.identifier-row.selected{border-color:var(--color-1)}.identifier-row .name{flex:1;overflow-wrap:anywhere}.mapping-table{width:100%;border-collapse:collapse}.mapping-table th,.mapping-table td{text-align:left;padding:var(--spacing-xs) var(--spacing-sm);border-bottom:1px solid var(--color-fg)}.two-col{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:var(--spacing-lg);align-items:start}@media(max-width:900px){.two-col{grid-template-columns:1fr}}.file-icon-preview{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-sm);border:2px dashed var(--color-fg);padding:var(--spacing-xl);text-align:center}
