*{box-sizing:border-box}body{margin:0;background:#f5f7f8;color:#20354b;font-family:system-ui,-apple-system,Segoe UI,sans-serif}header{background:linear-gradient(120deg,#1a3149,#244666);color:white;padding:20px max(24px,calc((100vw - 1280px)/2));}.top{display:flex;justify-content:space-between;font-family:Georgia,serif;font-size:17px}.minor{font:12px system-ui;color:#d1dfe7}h1{font-family:Georgia,serif;text-align:center;font-size:clamp(26px,3vw,38px);margin:35px 0 5px}header p{text-align:center;color:#d4e0e9;margin:0 0 22px;font-size:14px}form{display:flex;max-width:720px;margin:0 auto 28px;gap:9px}input{flex:1;min-width:0;padding:15px;border-radius:7px;border:1px solid #bdcbd2;font-size:15px}button{border:0;border-radius:6px;background:#c7ded4;color:#17374b;padding:12px 22px;font-weight:600;cursor:pointer}button:hover{filter:brightness(.96)}main{display:grid;grid-template-columns:minmax(300px,39%) minmax(0,61%);gap:18px;padding:24px;max-width:1480px;margin:auto}.results,.mapSection{min-width:0}.intro h2{font-family:Georgia,serif;font-size:22px;margin:0 0 8px}.intro p{color:#647583;font-size:14px;margin:0 0 16px}.book{background:white;border:1px solid #d9e3e6;border-radius:10px;padding:17px;margin-bottom:12px;box-shadow:0 2px 8px #1b31430a}.book h3{font-family:Georgia,serif;font-size:19px;margin:0 0 5px}.author{color:#566a78;margin:0 0 14px}.meta{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:13px}.meta span{display:block;color:#71818c;font-size:11px}.shelf{margin-top:14px;padding:9px 11px;background:#f0f5f3;color:#426659;border-radius:5px;font-size:13px}.mapSection{background:white;border:1px solid #dce5e9;border-radius:10px;padding:14px}.mapHead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.mapHead small{display:block;color:#6c7f8b;margin-top:4px;font-size:12px}.zoom{display:flex;gap:4px}.zoom button{padding:8px 12px}.viewport{height:min(76vh,800px);min-height:440px;overflow:hidden;background:#e9edf0;border:1px solid #d8e2e7;border-radius:8px;touch-action:none;cursor:grab;position:relative}.viewport:active{cursor:grabbing}.mapInner{position:absolute;top:0;left:0;transform-origin:top left}.mapInner img{display:block;width:460px;height:auto;max-width:none;user-select:none;pointer-events:none}.mapNote{font-size:12px;color:#677b87}footer{text-align:center;color:#7a8c96;font-size:12px;padding:18px}@media(max-width:800px){main{display:block;padding:14px}.mapSection{margin-top:16px}.viewport{height:520px;min-height:0}.top{font-size:14px}header{padding:18px 16px}form{margin-bottom:12px}}
.mapInner{width:460px;height:989.58px}.shelfOverlay{position:absolute;inset:0;pointer-events:none}.shelfPin{position:absolute;transform:translate(-50%,-50%);border:2px solid #23785e;background:#d3eee1dd;color:#164b3a;padding:3px 5px;border-radius:5px;min-width:31px;min-height:24px;font-size:12px;box-shadow:0 1px 4px #0003;pointer-events:auto;cursor:pointer}.shelfPin:hover,.shelfPin.selected{background:#207b5c;color:white;outline:3px solid #92d4b8}.shelfPin:focus-visible{outline:3px solid #143bce}.shelfDetails{background:#edf5f1;border:1px solid #b7d4c7;border-radius:9px;padding:13px;margin:0 0 14px;color:#234d41;font-size:14px}.shelfDetails strong{display:block;font-size:19px;margin:4px 0}.shelfDetails small{display:block;margin-top:6px;color:#59776c}.mapInner img{width:460px}.mapHead strong{display:block}

/* V3: la selezione segue il rettangolo dello scaffale; etichetta discreta, niente fumetto. */
.shelfPin{display:flex;align-items:center;justify-content:center;transform:translate(-50%,-50%);min-width:0;min-height:0;padding:0 1px;border:1px solid rgba(28,105,82,.75);border-radius:2px;background:rgba(107,187,153,.13);color:#173d38;font-size:10px;font-weight:700;box-shadow:none;line-height:1;white-space:nowrap;overflow:visible}
.shelfPin:hover{background:rgba(85,174,136,.3);outline:1px solid #228267}
.shelfPin.selected{background:rgba(56,175,112,.35);border:2px solid #138458;color:#073d2c;outline:none;box-shadow:0 0 0 1px #fff}
.shelfPin:focus-visible{outline:2px solid #143bce;outline-offset:2px}
.viewport{height:min(76vh,800px)}

.editorBar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}.editorBar button,.importLabel{font-size:12px;padding:9px 11px}.editorBar #editToggle{background:#1e4664;color:#fff}.editorBar #editHint{font-size:12px;color:#49616f}.importLabel{border-radius:6px;background:#c7ded4;color:#17374b;font-weight:600;cursor:pointer}.importLabel input{display:none}.shelfOverlay.editing .shelfPin{cursor:move;touch-action:none;overflow:visible}.resizeHandle{display:none}.shelfOverlay.editing .resizeHandle{display:block;position:absolute;right:-5px;bottom:-5px;width:12px;height:12px;background:#123d69;border:2px solid #fff;border-radius:3px;cursor:nwse-resize;touch-action:none}.shelfOverlay.editing .shelfPin{outline:1px dashed #1e4664}.editorBar [hidden]{display:none!important}

.adminAccess{padding:12px 24px;background:#f7f9fc}.adminAccess details{max-width:720px;margin:auto}.adminAccess form{display:flex;flex-wrap:wrap;gap:12px;align-items:end;padding:12px 0}.adminAccess label{display:flex;flex-direction:column;gap:4px}.adminAccess input{padding:8px;border:1px solid #aaa;border-radius:5px}.adminAccess button{padding:9px 14px;cursor:pointer}#adminMessage{font-size:0.9rem}

/* V7: scaffali compatibili evidenziati quando si seleziona un libro */
.shelfPin.bookMatch { background: #facc15 !important; color: #172554 !important; border: 3px solid #b45309 !important; box-shadow: 0 0 0 5px rgba(250,204,21,.45),0 0 22px rgba(250,204,21,.75) !important; z-index: 10; }
.book[role="button"] { cursor:pointer; }
.book[role="button"]:focus-visible { outline:3px solid #ca8a04; outline-offset:3px; }
